无法使document.getElementById.getElementsByTagName正常工作

时间:2010-08-06 01:37:10

标签: javascript-events

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,然后返回文本。有些原因它只是没有做任何事情。

1 个答案:

答案 0 :(得分:1)

innerHTML不是读取textarea值的正确方法。

部分原因是因为其中的任何<&字符都会被HTML转义,但主要是因为HTMLTextAreaElement节点内的文本节点内容并未指示当前值文本区域。

实际上,文本节点内容是HTML源中看到的textarea的原始内容。这与defaultValue属性相同。当你在textarea中输入时它没有得到更新...除了在IE中,它通常会把它全部弄错。

您可能希望改为使用inputs[iX].value

正常输入也是如此,其中input.value表示当前值,但input.getAttribute('value')input.defaultValue相同,表示放在value="..."属性中的原始值HTML源代码。再次:由于更多的错误,在IE中除外。

同样适用于复选框的checkedselected属性并选择选项:checkedselected 属性是原始属性价值反映在defaultCheckeddefaultSelected 属性

此外,使用length-1您忽略列表中的最后一个textarea。你真的有意这样做吗?