我有一个函数,它创建一个新的div,其功能输出为阿拉伯语。
function createListItem(value) {
var iDiv = document.createElement('div');
iDiv.id = 'block';
iDiv.className = 'block' + i;
var classString = iDiv.className.toString();
document.getElementsByTagName('body')[0].appendChild(iDiv);
iDiv.innerHTML = toArabic(value).toString() + " " + "<span class='remove' onclick=' removeDummy(" + classString + "); '>x</span>";
i++;
}
它用Id块#创建一个div,所以第一个是block0,第二个是block1,依此类推。
我想添加一个“删除”按钮,单击“x”将删除创建的div。我能够在removeDummy函数中提醒div名称,但它仍然会给出错误“block0被点头定义”。
删除功能:
function removeDummy(value) {
var elem = document.getElementById(value);
elem.parentNode.removeChild(elem);
return false;
}
该功能一直工作,直到我给它的值,但它会删除最旧的div,所以我决定给它一个div id来删除那个被抄袭的那个。
什么可能导致此错误?为什么函数会使用alert而不是remove?
我怎么能解决这个问题?
提前致谢!
答案 0 :(得分:1)
偶然发生一些错误:
首先:您创建的每个div都具有相同的ID但不同的classNames。这应该颠倒过来。将id视为您的个人ID,将类名视为工作。两个人不能拥有相同的身份,但他们可以拥有相同的工作。
iDiv.id = 'block' + i;
iDiv.className = 'block';
第二:目前你的删除按钮如下所示:
<span class='remove' onclick=' removeDummy(block1); '>x</span>
如果点击它,它会尝试调用removeDummy
并将变量block1
传递给它。如果您之前没有定义过block1,那么它将包含具有相同想法的元素。您需要将此值封装在'
- s
"<span class='remove' onclick=' removeDummy('block" + i + "'); '>x</span>"
答案 1 :(得分:0)
是的,你没有递增元素的[id]
[id]
对于页面上的一个元素是唯一的,className可以在多个元素之间共享
我更喜欢使用document.querySelector()
,#
代表ID,.
代表className,或者两者都不选择标记。
答案 2 :(得分:0)
更改:** iDiv.setAttribute(&#34; id&#34;,&#34; block&#34;); **
function createListItem(value){
var iDiv = document.createElement('div');
iDiv.setAttribute("id","block");
iDiv.className = 'block' + i;
var classString = iDiv.className.toString();
document.getElementsByTagName('body')[0].appendChild(iDiv);
iDiv.innerHTML = toArabic(value).toString() + " " + "<span class='remove' onclick=' removeDummy(" + classString + "); '>x</span>";
i++;
}
答案 3 :(得分:0)
您将所有div id设置为“阻止”尝试更改以下两行:
iDiv.id = 'block';
iDiv.className = 'block' + i;
对此:
iDiv.id = 'block' + i;
iDiv.className = 'block';