繁体   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