JavaScript:为我的数组元素添加索引号的函数不断应用索引号

时间:2017-11-24 10:38:19

标签: javascript arrays

好的,有点难过这个。我创建了一个函数,这个函数根据数组长度在数组元素的前面添加一个数字。这里的希望是最终用户在查看他们的图书清单时能够看到他们图书的索引编号。

var myFormData = [];

  function addArrayElement() {
    for(i=0; i < myFormData.length; i++){       
    myFormData[i] = i+1 + ": " + myFormData[i] + "<br>";
    }

如何检查单个数组元素是否已将数字和断点应用于将其打印为HTML

基本上我只需要能够在用户提交数据的新元素时添加索引号和断点,而不是将其应用于已经提交的所有内容

我看到了逻辑错误,我知道每次for循环都会运行它迭代数组的每个元素并添加一个索引号和一个断点。我不知道如何在不使用for循环的情况下为每个元素提供唯一标识符。

通过存储数组元素的特定索引号,然后以某种方式将其粘贴到输出上,可以以某种方式实现相同的效果,因为它被打印到屏幕上。 像这样?

document.getElementById('booktitle').innerHTML = INDEXNUMBER + ":" +myFormData+join("<br>);

我认为这个数字总是像这样静态。我不确定。

我不知道这段代码是否相关,但这些是我用来将书籍打印到HTML元素和&amp ;;我处理数据提交到数组。

      function printBooks() {
        clearBook();
        alert("Sorting your books");
        //Function within the default sort method
        //The inital array.sort(); is case sensitive and ruined the sorting procedure
        //Had to refactor it in my code to make it sort correctly
        myFormData.sort(function(a,b){
        a = a.toLowerCase();
        b = b.toLowerCase();
        if(a == b) return 0;
        return a < b ? -1 : 1;
        });
        addArrayElement();
        document.getElementById('booktitle').innerHTML = myFormData;            
    }



     function submitData()
                         {     
        value1 = document.getElementById("myTextBox").value;
        var boxCheck = document.getElementById("myTextBox").value;
           if (boxCheck.length < 1)
              {
                alert("Search field is blank")   
              }
           else {
              myFormData.push(value1);
             alert("Data Contents: " + myFormData);
             alert("You have submitted:" + " " + value1 + " " + "to your library." )
             document.getElementById('booktitle').innerHTML = myFormData;          
           }
        }

enter image description here

1 个答案:

答案 0 :(得分:1)

也许你可以检查你的元素,看看它是否已经包含"<br>"

  function addArrayElement() {
    for(i=0; i < myFormData.length; i++){
    if(myFormData[i].indexOf("<br>") < 0)
       myFormData[i] = i+1 + ": " + myFormData[i] + "<br>";
    }

或者另一种方法是创建另一个将显示的数组而不是myFormData;

   var arrayToDisplay = [];
   function addArrayElement() {
    for(i=0; i < myFormData.length; i++){
       arrayToDisplay[i] = i+1 + ": " + myFormData[i] + "<br>";
    }

因此,您的arrayToDisplay将始终只包含index + value of previous array