Javascript Don';如果字符串已经包含OnChange,则不能追加

Javascript Don';如果字符串已经包含OnChange,则不能追加,javascript,html,dom,Javascript,Html,Dom,我在一列上有一个javascript OnChange函数,该列有文本框,用于捕获列中每一行的名称。我将附加所有名称并存储在变量中。 现在,假设用户再次单击相同的文本框,我不想再次附加该名称 var AppendedString=null; 函数onChangeTest(文本框){ AppendedString=AppendedString; AppendedString=AppendedString+';'+textbox.name; //这会产生null;txt_2_4;txt_2_6;t

我在一列上有一个javascript OnChange函数,该列有文本框,用于捕获列中每一行的名称。我将附加所有名称并存储在变量中。 现在,假设用户再次单击相同的文本框,我不想再次附加该名称

var AppendedString=null;
函数onChangeTest(文本框){
AppendedString=AppendedString;
AppendedString=AppendedString+';'+textbox.name;
//这会产生null;txt_2_4;txt_2_6;txt_3_4;txt_2_4等等..我不想再附加相同的名称,这里是txt_2_4

}
这些行似乎有唯一的名称。 您只需检查AppendedString是否已经包含该名称 :

var AppendedString=''

function onChangeTest(textbox) {
  if (!AppendedString.includes(textbox.name)) {
    AppendedString += ';' + textbox.name;
  }
}

不能将
AppendedString
初始化为
null
,否则
includes()
方法将不可用

否则,您可以为每一行指定一个唯一的ID,并将用户已单击的ID存储在数组中

var AppendedString = '';
var clickedRows = [];

function onChangeTest(textbox) {
      if (!clickedRows.includes(textbox.id)) {
        AppendedString += ';' + textbox.name;
        clickedRows.push(textbox.id)
      }
    }
var arr=[];
$(“输入[type='text']”)。在(“单击”,函数()上){
var nowS=($(this.attr('name'));
如果(!(arr.indexOf(nowS)>-1)){
到达推送(nowS)
}
控制台日志(arr)
});

您可以添加标记文本框,并在再次单击时忽略它。与使用jquery一样,您可以执行以下操作:

function onChangeTest(textbox) {
    AppendedString = AppendedString;
    if (!textbox.hasClass("clicked")){
        AppendedString = AppendedString + ';' + textbox.name;
        textbox.AddClass("clicked");
    }
 }

是,行是唯一的。我尝试了你的代码,但它什么也没做。甚至,为了测试,警报也不会被触发。您是否将AppendedString初始化为空字符串?是的,我初始化了,它显示为空警报,而null则在警报中显示为null。这意味着它没有附加antyhing。我的答案中有一个错误,我正在检查
包含(textbox)
。可能是我做错了什么,而不是
includes(textbox.name)
。当我在没有if语句的情况下运行代码,并使用alert进行检查时,每次单击文本框后,我都会得到所有的名称,但当我应用if语句时,每次单击文本框后都不会触发alert。我只需要使用javascript。要运行和检查网页中的代码,我需要编写alert而不是console.log。对吗?是的,它在Chrome上工作但我需要一些类似的东西给IE。有什么黑客吗?。谢谢你们的帮助。我在代码中添加了一些小的改动,这在chrome和IE上都可以使用。我无法升级投票,但我已经将其标记为答案。我可以拆分输出吗?我得到了txt_2_4,所以我想选择2和4并将其存储在一个变量中。是的,您可以,但您必须保持与数字相同的名称。例如lbl1,lbl2。使用var m=“lbl1”;控制台日志(m.slice(3))