function confirm_results(theform) {
var inputsX = document.getElementById(theform).getElementsByTagName('textarea');
for(var iX = 0, nX = inputsX.length - 1; iX < nX; iX++)
{
text += inputs[iX].innerHTML + ', ';
}
return text;
}
谁能告诉我为什么这不起作用?我试图找到我传递名称的DIV中的所有textarea,然后返回文本。有些原因它只是没有做任何事情。
答案 0 :(得分:1)
innerHTML
不是读取textarea值的正确方法。
部分原因是因为其中的任何<
或&
字符都会被HTML转义,但主要是因为HTMLTextAreaElement
节点内的文本节点内容并未指示当前值文本区域。
实际上,文本节点内容是HTML源中看到的textarea的原始内容。这与defaultValue
属性相同。当你在textarea中输入时它没有得到更新...除了在IE中,它通常会把它全部弄错。
您可能希望改为使用inputs[iX].value
。
正常输入也是如此,其中input.value
表示当前值,但input.getAttribute('value')
与input.defaultValue
相同,表示放在value="..."
属性中的原始值HTML源代码。再次:由于更多的错误,在IE中除外。
同样适用于复选框的checked
和selected
属性并选择选项:checked
和selected
属性是原始属性价值反映在defaultChecked
和defaultSelected
属性。
此外,使用length-1
您忽略列表中的最后一个textarea。你真的有意这样做吗?