0

これが私の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と、複製されたボタンであっても、すべてのボタンが元のボタンで機能することです。もう 1 つのことは、送信ボタンをクリックして からオプションを取得すると、送信drop-down list(s)後、最後のドロップリストのみがカウント (複製) されますが、オリジナルのみが必要です。

送信をクリックした後の私のページは次のとおりです。

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

どうすればこれを解決できますか? つまり、idと名前、および複製された要素を操作する関数を変更しますか?

4

2 に答える 2

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;
            }
于 2013-01-14T10:17:42.793 に答える
0

まず第一に、複製したい場合は id を使用しないでください。クラスごとに使用して選択し( jQueryを使用することを強くお勧めします)、使用しますname="some_name[]"

あなたの問題を解決するには、次のことができます:onclick="javascript:enable(this)"または、jQuery を使用する場合は、`onclick="javascript:jQuery(this)" を使用してから、現在の要素の兄弟を検索します (純粋な js 構文がわからない場合は、 jquery のみです。jquery のサポートが必要な場合はお知らせください)。

これが役に立てば幸いです。幸運を祈ります。

于 2013-01-14T07:54:11.547 に答える