带正则表达式的String.replace()

时间:2014-03-02 20:10:10

标签: javascript jquery str-replace

我很难让String.replace()使用JavaScript。它在控制台TypeError中返回:url未定义

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

3 个答案:

答案 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()陈述显示的内容。