这是我的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
和名称以及使用克隆元素的函数?
答案 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;
}