问题描述
|
var aa = 0;
var arr = new Array(\"one\",\"two\",\"three\");
var arr1 = new Array(\"four\",\"five\",\"six\");
function cl(me) {
me.clicked = !me.clicked;
var id = me.id;
if (me.clicked) {
if (id == 1000) aa = arr;
if (id == \"one\" || id == \"two\" || id == \"three\") aa = arr1;
var s = document.getElementById(\"sample\");
var d = document.createElement(\"div\");
d.id = me.id + 1;
s.appendChild(d);
for (i = 0; i < aa.length; i++) {
var l = document.createElement(\"label\");
l.innerHTML = aa[i];
l.id = aa[i];
l.onclick = function (){cl(this)};
d.appendChild(l);
}
} else {
var child = document.getElementById(me.id + 1);
var parent = document.getElementById(\"sample\");
parent.removeChild(child);
}
}
标记:
<label id=\"1000\" onclick=\"cl(this)\">click</label><br><div id=\"sample\"></div>
单击标签“单击”时,将成功生成三个标签“一个” \“两个” \“三个”。
当我单击标签\“一个\”标签\“四个\” \“五个\” \“六个\”成功生成。
当我再次单击标签“一个”,“三个四个五个”标签时,将被删除。
但是问题是当我单击标签\“ click \”,然后再标签\“ one \” ..现在,当我再次单击\“ one \”时,标签“一二三”被单独删除,而没有被删除“四”五六”。
解决方法
HTML标签元素没有clicked属性,因此给它们提供clicked属性不是一个好主意。
标签用于没有标签或标题的表单控件,例如单选按钮和复选框。这里更合适的元素是按钮(按钮或输入类型按钮元素)。
ID属性必须以字母开头,不能全部为数字。
浏览器可以忍受以上所有情况,但是,忽略规范不是一个好主意,因为可能会发布符合您规范的浏览器,而您的代码却没有遵守规范。
我认为您的问题是,由一个创建的标签看起来就像由四个创建的标签一样。如果您通过单击一个来删除四个,则无法删除它创建的标签,直到再次创建它。
使用元素检查器查看正在发生的事情。