我正在尝试使用javascript将onKeyPress事件添加到动态创建的html元素中。实际上,添加了元素,分配了id,并添加了innerHTML,但是onmouseover,onmouseout和onKeyPress(第二个最后一行)事件没有添加到元素中。最后一行(.focus())确实有效。
代码:
function newParagraphAfter(elem)
{
blockElemId++;
newPara = document.createElement("p");
newPara.id = 'block_' + blockElemId;
newPara.contentEditable = 'true';
newPara.onmouseover = "this.style.border='1px dashed white';";
newPara.onmouseout = "this.style.border='none';";
newPara.innerHTML = "Edit Here!";
elem.parentNode.insertBefore(newPara, elem.nextSibling);
document.getElementById('block_' + blockElemId).onKeyPress = "return editKeypress(this, event)";
document.getElementById('block_' + blockElemId).focus();
}
非常感谢任何帮助,
尼科
答案 0 :(得分:2)
我认为你不能为事件处理程序分配字符串--Javascript可以强制数据但不是这种程度。您需要做的是将代码编写为函数,然后将函数分配给事件处理程序
答案 1 :(得分:1)
小写你的onKeyPress并使用一个函数
document.getElementById('block_' + blockElemId).onkeypress = function(e) {
if(!e) e = event;
return editKeypress(this, event)
};
编辑:添加 bobince 的建议,以获得更多跨浏览器的友好答案。