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