JavaScript onKeyPress分配问题

时间:2009-10-09 21:44:29

标签: javascript javascript-events

我正在尝试使用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();
}

非常感谢任何帮助,

尼科

2 个答案:

答案 0 :(得分:2)

我认为你不能为事件处理程序分配字符串--Javascript可以强制数据但不是这种程度。您需要做的是将代码编写为函数,然后将函数分配给事件处理程序

答案 1 :(得分:1)

小写你的onKeyPress并使用一个函数

document.getElementById('block_' + blockElemId).onkeypress = function(e) {
    if(!e) e = event;
    return editKeypress(this, event)
};

编辑:添加 bobince 的建议,以获得更多跨浏览器的友好答案。