我很难让String.replace()使用JavaScript。它在控制台TypeError中返回:url未定义
var url = $(this).attr("href");
var id = url.replace(/(^.{4})(&remove=1)/, "");
console.log(id);
答案 0 :(得分:0)
jquery语句$(this).attr(“href”)返回undefined。
这就是为什么它说url是未定义的。
答案 1 :(得分:0)
如果您的错误是TypeError:url未定义,则表示“$(this).attr(”href“);”返回undefined。你的正则表达式还可以。
尝试输出此内容,$(this)和$(this).attr(“href”)。您将看到问题所在(您的整个选择器可能已损坏,或者您可能选择了一个没有“href”属性的元素)。
答案 2 :(得分:0)
似乎this
不是DOM对象,或者如果它是DOM对象,则它没有href
属性。这是导致该结论的逻辑和简单测试应用程序。
您的错误意味着url
未定义。由于url
是$(this).attr("href")
的乘积,我们必须弄清楚该表达式是如何定义的。
只要安装了jQuery,就无法定义$(this)
,如果是,则会引发有关引用.attr()
方法的错误。因此,我们可以假设$(this)
必须是有效的jQuery对象。
因此,您似乎有一个空的jQuery对象,或者this
元素没有href
属性。
运行快速jsFiddle test表示这两种情况都会导致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()
陈述显示的内容。