簡體   English   中英

帶正則表達式的String.replace()

[英]String.replace() with regular expression

我很難讓String.replace()與JavaScript一起使用。 它在控制台TypeError中返回:url未定義

var url = $(this).attr("href");
var id  = url.replace(/(^.{4})(&remove=1)/, "");
console.log(id);

jQuery語句$(this).attr(“ href”)返回未定義。

這就是為什么說url未定義的原因。

如果您的錯誤是TypeError:URL未定義,則表示“ $(this).attr(“ href”);“ 返回未定義。 您的正則表達式還可以。

嘗試輸出this($(this)和$(this).attr(“ href”))的內容。 您將看到問題出在哪里(您的整個選擇器可能已損壞,或者您選擇的元素只是沒有“ href”屬性)。

看來this不是DOM對象,或者如果它是DOM對象,則它沒有href屬性。 這是得出結論的邏輯和簡單測試應用程序。

您的錯誤意味着url未定義。 由於url$(this).attr("href")的乘積,因此我們必須弄清楚該表達式如何未定義。

只要安裝了jQuery,就不能取消定義$(this) ,如果是$$ this,則在引用.attr()方法時會遇到另一個錯誤。 因此,我們可以假設$(this)必須是有效的jQuery對象。

因此,看來您要么有一個空的jQuery對象,要么this元素沒有href屬性。

運行快速的jsFiddle測試表明,任何一種情況都會導致url未定義。 因此,您必須確定this是否不是DOM對象,或者您的DOM對象是否沒有href屬性。 這是這兩個原因之一。

這是測試代碼:

// all  of these tests print "undefined" to the console

// a DOM object that doesn't have the href attribute because
// #test is just an ordinary div
var url = $("#test").attr("href");
console.log(url);

// an empty jQuery object because #foo doesn't exist
url = $("#foo").attr("href");
console.log(url);

// a non DOM object in the jQuery object
url = $({}).attr("href");
console.log(url);

您可以通過以下操作自己進行更多調試:

console.log("begin marker");
console.log(this);
console.log(this.href);
var url = $(this).attr("href")
console.log(url);
console.log("end marker");

然后,報告那些console.log()語句顯示的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM