[英]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.