使用javascript动态更改HTML表单

时间:2012-04-25 17:46:15

标签: javascript html

基本上我需要根据选择(单选按钮)更改表单中的元素。 这样就可以在页面上找到2个表单。

到目前为止,我已经提出了这个问题,但它似乎没有用......

//javascript

function FormChange(toChange){
    if (toChange){
        var oldHTML = document.getElementById('li1').innerHTML;
        var newHTML = "Company Name: " + "<input type="text" name="companyname" />";
        document.getElementById('li1').innerHTML = newHTML;
}

//HTML

<form action="insert.php" method="post">
<li id="li1">Firstname: <input type="text" name="firstname" />
</form>

<input type = "button" value="Change that bad boy" onclick="FormChange(true)"/>

我的意图是删除名字字段并将其替换为companyname字段。

非常感谢任何帮助,谢谢。

6 个答案:

答案 0 :(得分:1)

将两个当前答案放在一起,并添加一些错误处理:

function FormChange(toChange) {
    if (toChange) {
        var elt = document.getElementById('li1');
        if (elt) {
            var newHTML = "Company Name: " + "<input type='text' name='companyname' />";
            elt.innerHTML = newHTML;
        }
    }
}


<form action="insert.php" method="post">
<ul>
<li id="li1">Firstname: <input type="text" name="firstname" /></li>
</ul>

答案 1 :(得分:1)

function FormChange(toChange){
    if (toChange){
        var oldHTML = document.getElementById('li1').innerHTML;
        var newHTML = "Company Name: " + "<input type='text' name='companyname' />";
        document.getElementById('li1').innerHTML = newHTML;
    }
}

DEMO.

答案 2 :(得分:0)

尝试转义innerHTML文本中的内部双引号。

答案 3 :(得分:0)

您忘了关闭{

修正:

function FormChange(toChange) {
    if (toChange) {
        var oldHTML = document.getElementById('li1').innerHTML;
        var newHTML = "Company Name: " + "<input type="text" name="companyname" />";
        document.getElementById('li1').innerHTML = newHTML;
    } // <-- this was missing!
}

答案 4 :(得分:0)

为什么不使用jquery ???,做这样的事情:

$("#li1").change(function(){
alert("it changed");//here do whatever you want to
});

我觉得它更容易,而且阅读性更强。(不要忘记导入Jquery库)

答案 5 :(得分:0)

我做了一些调整,仅在文本为"Firstname:"时才进行更改,因此重复调用不会不必要地混淆DOM(参见性能点9 here

JS:

function FormChange() {
    var obj = document.getElementById('li1');
    var oldHTML = obj.innerHTML.substring(0,10);

    if (oldHTML=="Firstname:") {
        var newHTML = "Company Name: <input type=\"text\" name=\"companyname\" />";
        obj.innerHTML = newHTML;
    }
}

HTML:

<form name="myForm" action="insert.php" method="post">
    <ul>
        <li id="li1">Firstname: <input name="firstname" type="text" /></li>
    </ul>
</form>
<input type="button" onclick="FormChange();" value="Change that bad boy" />

<强> Demo

进一步说明: