【问题标题】:JavaScript: Function that adds index number to my array elements keeps applying index numbersJavaScript:将索引号添加到我的数组元素的函数不断应用索引号
【发布时间】:2017-11-24 10:38:19
【问题描述】:

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

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 元素和处理向数组提交数据的函数。

      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;          
           }
        }

【问题讨论】:

  • 请添加一些想要的结果示例。
  • 添加了每次提交新数组元素时发生的情况的图片。我只需要能够添加新数据,而无需在每次提交内容时将索引号应用于所有内容。
  • @ItzSunoItzSuno,我不认为你的图片在这里相关
  • 图片是相关的,我建议只为输出添加数字,而不是在数据内部。
  • 我将图片更改为更具说明性。我如何将数字作为动态数字应用于输出?对于每个元素,如 1:Book 2:Book 3: book without the for loop

标签: javascript arrays


【解决方案1】:

也许你可以检查你的元素,看看它是否已经包含"&lt;br&gt;"

  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

【讨论】:

    猜你喜欢
    • 2015-11-21
    • 1970-01-01
    • 2021-08-19
    • 2014-11-13
    • 1970-01-01
    • 2021-09-14
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多