Javascript,克隆,功能和更改ID和名称,任何想法?

时间:2013-01-14 07:35:59

标签: php javascript html clone

这是我的Javascript:

<script>

        function disable()
        {
            document.getElementById("habits").disabled=true;
            document.getElementById("habits2").disabled=true;

            document.getElementById("exact").disabled=false;
        }
        function enable()
        {
            document.getElementById("habits").disabled=false;
            document.getElementById("habits2").disabled=false;

            document.getElementById("exact").disabled=true;
        }
        var counter =0;
        var i = 0;
        function duplicate() { 
            var original = document.getElementById('div');
            var clone = original.cloneNode(true); // "deep" clone

            i+=1;
            clone.id = "div" + i; // there can only be one element with an ID
            original.parentNode.appendChild(clone);

            document.getElementById('div' + i).getElementsByTagName('select').name += '_clone' + i;
            counter+=1;
        }

    </script>

这是我的HTML代码:

 <button id="button" onclick="duplicate()">Add List</button><br><br>
        <form id ="form" name="search" method="post" action="test.php">
            <div id="div">
                <div id="d">
                    <select name ="select" >
                        ...options...
                    </select>
                </div>

                Value:<input type="text" id ="exact">

                From: <input type="text" id="habits">
                To: <input type="text" id="habits2">

                <br>
                <input type="button" name="answer" value="Range" onclick="enable()"  >
                <input type="button" name="answer" value="Exact" onclick="disable()" >
            </div>
            <br><br>

            <input type="submit" name ="search" value="Submit">
        </form>

我的问题是,当我克隆div id=div时,所有按钮都适用于原始按钮,甚至是克隆按钮。另一件事是,当我单击提交按钮以从drop-down list(s)获取选项时,但在提交后,只计算(克隆)最后一个下拉列表,但我只想要原始。

点击提交后,这是我的页面:

<?php
$item = $_POST["select"];
echo $item;
?>

我该如何解决这个问题?也就是说,更改id和名称以及使用克隆元素的函数?

2 个答案:

答案 0 :(得分:0)

首先,如果要复制内容,请不要使用id。使用和按类选择(我强烈建议您使用jQuery),然后使用name="some_name[]"

要解决您的问题,您可以:onclick="javascript:enable(this)"或者,如果您决定使用jQuery,请使用`onclick =“javascript:jQuery(this)”,然后搜索当前元素的兄弟姐妹(don不知道纯js语法,只知道jquery,如果你需要jquery的帮助,请告诉我。)

希望这会有所帮助,祝你好运。

答案 1 :(得分:0)

试试这个。我通过添加一行来改变了这个功能

   function duplicate() { 
                var original = document.getElementById('div');
                var clone = original.cloneNode(true); // "deep" clone

                i+=1;
               clone.attr("id",replace(clone.attr("id"),"div"+i));// change the id of clone div
              //  clone.id = "div" + i; // there can only be one element with an ID
                original.parentNode.appendChild(clone);

                document.getElementById('div' + i).getElementsByTagName('select').name += '_clone' + i;
                counter+=1;
            }