document.getElementById("roster").innerHTML += "<button onclick=\"doSomething()\">+</button>\n" +
"<span onClick=\'$(this).remove();" +
"$(this).prev().remove();" +
"oiDelete(\"" + str + "\");" +
"removeCost(\"" + str + "\");" +
"selectedItem(\"" + str + "\");" +
"frDelete(\"" + str + "\")\';>" +
str + "</span><br>";
所以这是我正在研究的Javascript
函数内部。它应该做的是创建可点击的文本区域(跨度),在单击时消失,并在单击文本时应该删除的可单击文本之前生成一个按钮。我可以让文本消失得很好,但是我无法使用该按钮消失。
生成的代码是:
<button onclick="doSomething()">+</button>
<span onclick="$(this).remove();
$(this).prev().remove();
oiDelete("Marneus Calgar");
removeCost("Marneus Calgar");
selectedItem("Marneus Calgar");
frDelete("Marneus Calgar")" ;="">Marneus Calgar</span>
为什么在开始范围标记的末尾生成=""
?为什么按钮没有正确删除? $(this).prev().remove()
不是正确的选项吗?
答案 0 :(得分:2)
如果我们抛弃最佳做法,这就是工作代码。
document.getElementById("roster").innerHTML += "<button onclick=\"doSomething()\">+</button>\n" +
"<span onClick=\'$(this).prev().remove();" +
"$(this).remove();" +
"oiDelete(\"" + str + "\");" +
"removeCost(\"" + str + "\");" +
"selectedItem(\"" + str + "\");" +
"frDelete(\"" + str + "\")\'>" +
str + "</span><br>";
您的代码不起作用的原因是因为您正在移除具有onclick功能的span
。这意味着它无法到达$(this).prev().remove()
位。
我希望这是有道理的。
如果您想加倍努力,则应将$(this).remove();
放在frDelete()
功能之后。否则,您调用的那4个函数将永远不会被调用。
答案 1 :(得分:0)
你弄乱了引号,当然 - 最后调用自我删除代码(!)
一个提示 - 将这些附加功能封装在一个程序中 - 它有助于保持代码清洁。
document.getElementById('roster').innerHTML += '<button onclick=\'doSomething()\'>+</button>' +
'<span onClick="doCalls(); $(this).prev().remove(); $(this).remove(); ">' + str + '</span><br>';
&#13;