使用INPUT标记的VALUE属性(及其值)读取HTML表单的innerHTML

时间:2011-09-29 18:37:14

标签: javascript html innerhtml

我有一个带有输入字段的html form

我不是通过input读取和发送document.ipForm.userName.value字段的值,而是需要将整个html内容发送到html解析器并提取每个输入字段的<name ,value>对其他程序(以及其他信息)。

但是当我在JavaScript中这样做时(我想要纯JavaScript而不是其他库)

var contents=document.getElementById("formArea").innerHTML;
alert(contents);

即使我输入了一些值,也不会显示<{strong> value="enteredValue"<input/>字段。

我的HTML文件:

<html>
<head>
    <script type="text/javascript">
    function showInnerHtml(){
        var contents=document.getElementById("formArea").innerHTML;
        alert(contents);
    }
    </script>
</head>
<body>
    <div id="formArea">
        <form name="ipForm" >
          UserName : <input type="text" name="userName"> 
        </form>
    </div>
    <div> other contents.....   </div>
    <div onclick="showInnerHtml()">Show InnerHTML</div>
</body>
</html>

我在这里遗漏了什么或者这是不可能的。

别叫我MAD。但我正在为这种奇怪的情况而苦苦挣扎。

1 个答案:

答案 0 :(得分:13)

这是因为value是填写文本框时的属性,而不是属性。这意味着.value工作正常,但它不是实际DOM作为属性的一部分(如<input value="...">)。

您需要明确地设置它:http://jsfiddle.net/BkjhZ/

var elems = document.getElementsByName("ipForm")[0].getElementsByTagName("input");

for(var i = 0; i < elems.length; i++) {
    // set attribute to property value
    elems[i].setAttribute("value", elems[i].value);
}