2

我有一个 div,它叫做 tab1。tab1 div 内部有许多输入(字段和单选按钮)。我得到这样的innerHTML:

document.getElementById("tab1").innerHTML;

示例代码:

<div id="tab1">
    <input type="text" id="text1" />
</div>

这行得通,但是如果我在 text1 输入中输入任何值,例如,它不在 innerHTML 中。我将如何获得包含输入值的 innerHTML?这有可能吗?

谢谢!

4

3 回答 3

3
<div id="tab1">
    <input type="text" id="text1"
    onkeyup="javascript:this.setAttribute("value", this.value);"/>
</div>

这将给出 div 的 innerHTML 的值。

document.getElementById("tab1").innerHTML;

您可以相应地更改事件,我设置它onKeyUp

于 2013-04-02T16:33:19.300 回答
1

如果你想得到输入/收音机的值,你可以用 jQuery 来做:
var Inputs = $("div#tab1 input, div#tab1 radio");
你现在在变量 Inputs 中有一个所有输入和收音机的数组。然后您可以像这样访问这些值:Inputs[0].value
如果您想使用如下所示的纯 JavaScript:
var Inputs = document.getElementById("tab1").getElementsByTagName('input'); You can now access them like:Inputs[0].value andRadios[0].value`
@edit
谢谢,我更正了这些错误。

于 2013-01-16T11:31:39.893 回答
0

如果你在文本框中输入一些东西,innerHTML 是什么样子的?看起来像吗

    <input type="text" id="text1" value="your_value" />?

如果是这样,这是一个简单的函数,它返回你想要的:

    function getInnerHtml() {
        var div = document.getElementById("tab1");
        var childNodes = div.childNodes;
        var innerHtml = "";
        for (var i = 0; i < childNodes.length; i++) {
            var node = childNodes[i];
            if (node.nodeType == 1) {
                if (node.getAttribute("type") == "text") {
                    if (node.value != "") {  
                        //! This will change the original outerHTML of the textbox
                        //If you don't want to change it, you can get outerHTML first, and replace it with "value='your_value'" 
                        node.setAttribute("value", node.value);
                    }
                    innerHtml += node.outerHTML;
                } else if (node.getAttribute("type") == "radio") {
                    innerHtml += node.outerHTML;
                }
            }
        }
    }  

希望它有帮助。

于 2013-01-16T14:20:30.147 回答