Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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字符串#replaceAll仅在一个实例上工作_Javascript - Fatal编程技术网

Javascript字符串#replaceAll仅在一个实例上工作

Javascript字符串#replaceAll仅在一个实例上工作,javascript,Javascript,我有一个文本主体,方括号内有一些字符串,比如[value],我正在尝试运行一个函数,让用户为每个[…]输入一个值。我的大部分工作正常,但当我对更改的主体进行console.log时,只有一些值发生了更改。其中一些具有html标记,如[Hello],并且它们不会被更改。我只是不知道如何克服它 let data = $('#elm1').val(); console.log(data); let newData; function getWords() { let words

我有一个文本主体,方括号内有一些字符串,比如[value],我正在尝试运行一个函数,让用户为每个[…]输入一个值。我的大部分工作正常,但当我对更改的主体进行console.log时,只有一些值发生了更改。其中一些具有html标记,如
[Hello]
,并且它们不会被更改。我只是不知道如何克服它

let data = $('#elm1').val();
  console.log(data);
  let newData;

  function getWords() {
    let words = data.match(/[^[\]]+(?=])/g);

    console.log(words);

    words.forEach(function(word) {
      console.log(word);

      let input = prompt("Enter value to replace: "+word);

      newData = data.replaceAll("["+word+"]", input);
    });

    console.log(newData);
  }

问题是每次运行
forEach
时,它只是更新一个单词,并用最后更新的单词显示正文

我通过添加
data=newData
修复了这个问题,当时循环的迭代恰好保存了上一个更改,然后再进行下一个更改

let data = $('#elm1').val();
  console.log(data);
  let newData;

  function getWords() {
    let words = data.match(/[^[\]]+(?=])/g);

    console.log(words);

    words.forEach(function(word) {
      console.log(word);

      let input = prompt("Enter value to replace: "+word);

      newData = data.replaceAll("["+word+"]", input);
      data = newData; //Added this
    });

    console.log(newData);
  }

请单击编辑,然后单击
[]
,并提供一个我实际上认为我知道这个问题,但仍然不知道如何解决。每次运行foreach时,它都会更新数据,而不是重新更新newDat。HmmmI已经修复了它,在替换行下我添加了
data=newData
,因此它不断得到更新。每次都没有更新一个部件