Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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 尝试.replace()但未成功_Javascript_Jquery_String - Fatal编程技术网

Javascript 尝试.replace()但未成功

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

我有以下几行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 = 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,而不是文本。不清楚哪一个更接近实际需求(我们不知道)。