Javascript 尝试.replace()但未成功
我有以下几行HTML代码:Javascript 尝试.replace()但未成功,javascript,jquery,string,Javascript,Jquery,String,我有以下几行HTML代码: <li><a href="#" class="lstItem">Testing jQuery [First Bracket]</a></li> <li><a href="#" class="lstItem">Loving jQuery [Second one]</a></li> var item = $(".lstItem").text(); var match = it
<li><a href="#" class="lstItem">Testing jQuery [First Bracket]</a></li>
<li><a href="#" class="lstItem">Loving jQuery [Second one]</a></li>
var item = $(".lstItem").text();
var match = item.match(/\[(.*?)\]/);
item = item.replace(match[0], "");
$(".lstItem")
.each(function(index, item) {
var
$item = $(item),
oldtext = $item.text(),
match = oldtext.match(/\[(.*?)\]/),
newtext = oldtext.replace(match[0], '');
$item.text(newtext);
});
但一切都没有改变。有什么问题,如何纠正
在使用了的建议后,我得到了一个
未捕获的引用错误:在这一行中未定义文本
:
oldtext = $item.text,
item
是包含字符串的变量,而不是指向文本的指针。如果要更改文本,必须重新设置它,与vis$(“.listItem”).text(item)
编辑-预测下一个问题
下一个问题是,所有文本都设置为相同的内容。所以你真正想做的可能是这样的:
<li><a href="#" class="lstItem">Testing jQuery [First Bracket]</a></li>
<li><a href="#" class="lstItem">Loving jQuery [Second one]</a></li>
var item = $(".lstItem").text();
var match = item.match(/\[(.*?)\]/);
item = item.replace(match[0], "");
$(".lstItem")
.each(function(index, item) {
var
$item = $(item),
oldtext = $item.text(),
match = oldtext.match(/\[(.*?)\]/),
newtext = oldtext.replace(match[0], '');
$item.text(newtext);
});
这将为您完成任务:
您将代码拆分为太多行,还需要分别为每个元素运行replace
$(".lstItem").each(function() {
$(this).html(
$(this).html().replace(/\[(.*)\]/, "")
);
});
请参见JSFIDLE中的示例:,您的正则表达式可能更简单
var item = $(".lstItem").text();
var match = /\[(.*?)\]/;
$(".listItem").text(item.replace(match,""));
除了jimbojw的答案,
$(“.lstItem”).text()
将检索中的所有文本,但出现以下错误:未捕获引用错误:在代码的第6行未定义文本对不起,我已将文本变量命名为“text”,然后将其切换为“oldtext”,并忘记了一些引用。现在已经修复了。从技术上讲,这与OP发布的queston不一样,原因有二。首先,在您的代码中,只有方括号之间的内容将被清空,而在原始代码中,方括号中的任何内容的第一个实例都将被清空。不过,可以肯定的是,你所做的确实是他想要实现的,所以从这个意义上说,这更好。其次,您正在设置和修改HTML,而不是文本。不清楚哪一个更接近实际需求(我们不知道)。