Javascript 使用数组元素分配“id=”值返回:TypeError:document.getElementById(…)为空

Javascript 使用数组元素分配“id=”值返回:TypeError:document.getElementById(…)为空,javascript,Javascript,我试图将计算值写入表单元格,这些单元格通过使用数组元素选择的id=tag引用它们。所有试图使其工作的尝试,如“”都已编码,第一次尝试span[index]=span[index].toString;并使用window.setTimeoutfunction{code..},0;会出现上述错误 我发现发布的许多类似问题的回答都表明错误与页面加载有关 我要么误解了给出的解决方案,要么我尝试的是不同的。如果有人能举例说明如何实现这一点,我将不胜感激 function outputResults() {

我试图将计算值写入表单元格,这些单元格通过使用数组元素选择的id=tag引用它们。所有试图使其工作的尝试,如“”都已编码,第一次尝试span[index]=span[index].toString;并使用window.setTimeoutfunction{code..},0;会出现上述错误

我发现发布的许多类似问题的回答都表明错误与页面加载有关

我要么误解了给出的解决方案,要么我尝试的是不同的。如果有人能举例说明如何实现这一点,我将不胜感激

function outputResults() {
    var spans = ['span1', 'span2', 'span3'];
    var outputs = ['output1', 'output2', 'output3'];

    for (var index = 0; index < spans.length; index++)
    { 
        outputs[index] = (outputs[index] * 13) / 100;
        (document.getElementById('\'spans[index]\'').innerHtml = outputs[index]);
    };
};

首先,让我们看看这一行:

outputs[index] = (outputs[index] * 13) / 100;
你希望在这里发生什么?假设索引等于0。输出[0]=“output1”。你的作业是这样做的:

outputs[0] = ('output1' * 13) / 100;
您应该修改此声明。至于您的错误,这应该适用于您:

document.getElementById(spans[index]).innerHtml = outputs[index];
编辑: 您的代码有很多问题。您需要修复HTML自关闭td和tr标记,JavaScript代码输出值和innerHTML。请参阅此处的工作示例:

如果您不想选择文本id为“span[index]”的不存在元素,请使用document.getElementByIDspan[index]

顺便说一句,你所有的开始标记都以/>结尾,但应该是>。不确定你怎么没有从中得到一个大的HTML解析错误。/>语法只允许用于自结束元素,如hr、br、meta等,实际上只有在XHTML中才需要


此外,您的输出计算[索引]*13/100没有太多意义,因为你将一个字符串与数字13相乘-这将导致NaN。不确定你想用它实现什么。

为什么你要尝试将“output1”这样的字符串与13相乘?谢谢@Bergi和King。我应该遵循规则打开大脑。我一直坚持用它来初始化很明显,我没有好好思考。至于额外的/,我在没有注意的情况下复制了其他代码,在让输出函数运行后,我会使用它们。另一个规则是:最好自己编写。你可能猜我刚刚开始使用HTML和javascript,还有一段路要走。只是没有考虑省略引号-但如果没有别的,这将是我今天学到的一件事。
document.getElementById(spans[index]).innerHtml = outputs[index];