2010-08-06 117 views
0
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; 
} 

任何人都可以告诉我为什么这不起作用吗?我试图找到所有的textarea在一个DIV里面,我通过这个名字,然后返回文本。有些原因,它只是没有做任何事情。无法让document.getElementById.getElementsByTagName正常工作

回答

1

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

部分是因为其中的任何<&字符将被HTML转义,但主要是因为HTMLTextAreaElement节点内的文本节点内容并不表示textarea的当前值。

事实上,文本节点内容是textarea的原始内容,如HTML源中所见。这与defaultValue属性相同。它不会在你输入textarea时得到更新......除非在IE中像往常一样把它全部弄错了。

您可能想用inputs[iX].value代替。

这同样适用于正常的输入,其中input.value表示电流值,但input.getAttribute('value')相同input.defaultValue,表示放置在value="..."属性在HTML源的原始值。再次说明:除IE之外由于更多的错误。

同样再次适用于复选框和选择选项的checkedselected性能:checkedselected属性是原始值反映在defaultCheckeddefaultSelected和属性

此外,与length-1你忽略列表中的最后一个textarea。你真的想这么做吗?

+0

输入[iX] .value不起作用.... – eqiz 2010-08-06 13:58:03

+0

适用于我,更完整的示例? (请注意,目前为止,您尚未将'text'初始化为'''',因此如果按原样运行,没有附加代码,则在尝试“text + =”任何操作时都会出现错误。) – bobince 2010-08-06 16:10:08