Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用正则表达式替换String.replace()_Javascript_Jquery_Str Replace - Fatal编程技术网

Javascript 用正则表达式替换String.replace()

Javascript 用正则表达式替换String.replace(),javascript,jquery,str-replace,Javascript,Jquery,Str Replace,我很难让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.att

我很难让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”属性的元素)。

这似乎不是DOM对象,或者如果它是DOM对象,则它没有
href
属性。下面是导致这一结论的逻辑和简单的测试应用程序

您的错误意味着
url
未定义。由于
url
$(this.attr(“href”)
的产物,因此我们必须弄清楚该表达式是如何定义的

只要安装了jQuery,就不能取消定义
$(this)
,如果是,那么引用
.attr()
方法时会出现不同的错误。因此,我们可以假设
$(this)
必须是有效的jQuery对象

因此,您可能有一个空的jQuery对象,或者
this
元素没有
href
属性

快速运行显示,任何一种情况都会导致
url
未定义。因此,您必须确定
是否不是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()
语句显示的内容。

console.log(url)以查看它是什么。javascript还是jquery?@Mika它是相同的输出。url未定义。@Tushar我正在使用JQueryan,您有什么问题?错误消息不是很清楚吗?显然,
this
没有
href
属性,我尝试了以下代码:var url=$(this.attr(“href”);console.log(url);我得到两个输出。未定义和我想要的字符串。如何获得两个输出?您只显示一条
console.log()
语句。该代码是否被调用两次,一次使用有效输入,一次使用无效输入?我不明白你的意思。我已经解释过,
this
不是DOM对象,或者如果是,它没有
href
属性。您需要找出这两种可能性中的哪一种是问题所在。您没有向我们展示足够的代码/html,我们无法了解这两个问题中的哪一个,因此您要么自己解决问题,要么向我们展示更多的代码/html。@user1408643-我在回答的末尾添加了一些调试建议。