【问题标题】:Displaying total array elements for array being built by form显示由表单构建的数组的总数组元素
【发布时间】:2014-12-13 01:23:21
【问题描述】:

我目前正在上一门 JavaScript 课程,要求我进行以下操作:

  1. 用户在表单中一次输入一个名称,然后按提交
  2. 名称存储在数组中并输出到表中
  3. 在输入名称(并添加到表中)时,总数也必须根据数组进行更新,而不仅仅是通过计算表元素来更新

我目前的问题是我要添加一个名字,然后总数显示“1”--当我添加第二个名字时,总数显示“11”

这是我的 JavaScript 代码目前的样子:

function displayNamesAndTotal() {
// Your code goes in here.
var userInputName       = [];
var totalNamesEntered   = [];
var countTotal          = 0;
var firstName;
var arrayIndex;
var output;
var outputTotal;
var form;

form                = document.getElementById("userFormId");
output              = document.getElementById("userEntriesId");
outputTotal         = document.getElementById("testId");
//userInputName[0]  = form.firstname.value;

userInputName.push(form.firstname.value)

for (arrayIndex = 0; arrayIndex < userInputName.length; arrayIndex++) {

    output.innerHTML += "<tr><td>" + userInputName[arrayIndex] + "</td></tr>";
    countTotal += userInputName.length; 
}

outputTotal.innerHTML += countTotal;
return false;   

}

我花了大约一天的时间试图找出我做错了什么——这可能是一件容易令人尴尬的事情——但我不知所措,可以使用指导

有什么建议吗?

谢谢

【问题讨论】:

  • 呃,我知道我做错了什么,但我不知道如何解决它:(我需要做的是将表单数据推送到我的空数组中(填充它)。但是,我开始意识到它实际上并没有连续向数组添加更多元素,它只是将其视为始终是第一个长度。谁能解释我如何将表单数据(来自 onsubmit)推送到我的数组中,并在按下按钮时继续添加值?

标签: javascript arrays forms


【解决方案1】:

看起来您的总数存储的是字符串而不是数字。尝试使用 parseInt(number) 将字符串转换为数字。

【讨论】:

    【解决方案2】:

    很抱歉,从你们的其他答案中,我想我已经舔了

    for (arrayIndex = 0; arrayIndex < userInputName.length; arrayIndex++) {    
        tableData = "<tr><td>" + userInputName[arrayIndex] + "</td></tr>";
        totalCount = userInputName.length;
    }
    
    output.innerHTML += tableData;
    outputTotal.innerHTML = "<h4>Total Number of Strings: " + totalCount + "</h4>";
    
    form.string.select();
    return false;   
    

    这样,当它通过循环时,totalCount 充当数组的长度,然后在 innerHTML 语句的外部,我可以显示它并让它在提交新字符串时不断更新。

    感谢您的所有反馈

    【讨论】:

      【解决方案3】:

      outputTotal.innerHTML 是一个字符串,因此添加它会将字符串连接在一起。由于 outputTotal.innerHTML 以 null 开头,因此将 1 添加到它会创建“1”。再加 1 时,outputTotal.innterHTML 已经是“1”了,所以变成了“11”。

      不要增加 outputTotal.innerHTML,而是尝试直接将 HTML 设置为它。

      outputTotal.innerHTML = countTotal;
      

      【讨论】:

      • 问题:当我向数组(和表)添加新数据时,这不应该增加长度属性吗?在这种情况下,将其作为总数是否行得通,或者我错过了什么?
      • 你是对的。我只是在使用您的原始语法: outputTotal.innerHTML += countTotal 我编辑了我的答案以反映这一点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 2014-01-03
      • 1970-01-01
      相关资源
      最近更新 更多