使用JavaScript创建和复制/复制选择/选项列表菜单
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用JavaScript创建和复制/复制选择/选项列表菜单,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2318字,纯文字阅读大概需要4分钟。
内容图文
![使用JavaScript创建和复制/复制选择/选项列表菜单](/upload/InfoBanner/zyjiaocheng/673/8c3c977038954e678ca93b420d5c1b57.jpg)
我有一个选择列表菜单:
<label>
<select name="select" id="select1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</label>
我想动态地用确切的信息来复制它.我可以通过创建一个select元素并从第一个选择中复制innerHTML来做到这一点. (我还会生成一个将要进行选择的表行,但这并不重要):
var selectt = document.createElement("select");
selectt.setAttribute("name", "select"+counter);
selectt.setAttribute("id", "select"+counter);
selectt.onchange = function() {sellcalculate(counter);
cell3.appendChild(selectt);
document.getElementById("select"+counter).innerHTML=document.getElementById("select1").innerHTML;
它在Firefox上可以正常工作,但是IE仅创建选择项,但不会复制选项.
我的第二个问题是:如何向创建的元素添加onchange事件?
selectt.onchange = function(){sellcalculate(counter)};
这似乎不起作用.
这是编辑功能和解决ie问题之后的compelete函数:
function addRow(tableID) {
var counter = document.getElementById('rowcounter').value;
counter++;
document.getElementById('rowcounter').value = counter;
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell = row.insertCell(0);
var cell2 = row.insertCell(1);
var element2 = document.createElement("input");
element2.type = "text";
element2.id = "amount" + counter;
element2.onchange = function () {
sellcalculate(counter)
};
cell2.appendChild(element2);
var cell3 = row.insertCell(2);
var selectt = document.createElement("select");
selectt = document.getElementById("select1").cloneNode(true);
selectt.setAttribute("name", "select" + counter);
selectt.setAttribute("id", "select" + counter);
selectt.onchange = (function (cntr) {
return function () {
sellcalculate(cntr);
};
})(counter);
cell3.appendChild(selectt);
}
解决方法:
我现在无法在IE中进行测试,但是尝试使用.cloneNode()来创建新元素.
var selectt = document.getElementById("select1").cloneNode(true);
selectt.setAttribute("name", "select"+counter);
selectt.setAttribute("id", "select"+counter);
selectt.onchange = (function( cntr ) {
return function() { sellcalculate(cntr); };
})( counter );
cell3.appendChild(selectt);
传递给.cloneNode的true参数使它成为深层克隆(所有后代).
另外,我假设您希望onchange处理程序引用计数器的当前值,而不是潜在的将来值.这样,我使用新的函数调用来确定当前值的范围.
现在,无论这段代码运行时counter的值是多少,都将传递给sellcalculate().
内容总结
以上是互联网集市为您收集整理的使用JavaScript创建和复制/复制选择/选项列表菜单全部内容,希望文章能够帮你解决使用JavaScript创建和复制/复制选择/选项列表菜单所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。