在javascript for html文件中触发具有可食延迟的事件

在javascript for html文件中触发具有可食延迟的事件,javascript,html,events,Javascript,Html,Events,我必须延迟触发一个事件。处理程序向正在读取的任何段落添加边框。用户可以更改延迟。当我添加超时时,边框永远不会显示,而没有超时则会显示。如何延迟触发事件 window.onload = function() { init(); } function init() { for (var i = document.getElementsByTagName("P").length - 1; i >= 0; i--) { document.getEle

我必须延迟触发一个事件。处理程序向正在读取的任何段落添加边框。用户可以更改延迟。当我添加超时时,边框永远不会显示,而没有超时则会显示。如何延迟触发事件

window.onload = function() {
   init();
}

function init() {
    for (var i = document.getElementsByTagName("P").length - 1; i >= 0; i--)         {
        document.getElementsByTagName("P")[i].addEventListener("mouseover",     setTimeout(re, document.getElementById("input").innerHTML));
        document.getElementsByTagName("P")[i].addEventListener("mouseout", rl);
    };
}

function re(e) {    
var id=e.target.id;
    document.getElementById(id).style.border = "thick solid blue";
}
function rl(e) {
 var id=e.target.id;
    document.getElementById(id).style.border = "none";
}
尝试:-

setTimeout是在添加侦听器时调用的,而不是在调用事件时调用的。

我认为根据方法,第二个参数应该是执行代码之前等待的毫秒数。但在你的代码中似乎缺少了

尝试更改此行:

document.getElementsByTagName("P")[i].addEventListener("mouseover",     setTimeout(re, document.getElementById("input").innerHTML));
下面是一个例子:

document.getElementsByTagName("P")[i].addEventListener("mouseover",     setTimeout(re, 1000, document.getElementById("input").innerHTML));
window.onload = function() {
   init();
}

function init() {
    for (var i = document.getElementsByTagName("P").length - 1; i >= 0; i--)         {
        document.getElementsByTagName("P")[i].addEventListener("mouseover",     setTimeout(re(this), document.getElementById("input").value));
        document.getElementsByTagName("P")[i].addEventListener("mouseout", rl(this));
    };
}

function re(e) { 
    e.style.border = "thick solid blue";
}
function rl(e) {
    e.style.border = "none";
}

希望这能解决问题

如果要获取文本框输入,必须使用id.value而不是id.innerHTML 更改代码,如下所示:

document.getElementsByTagName("P")[i].addEventListener("mouseover",     setTimeout(re, 1000, document.getElementById("input").innerHTML));
window.onload = function() {
   init();
}

function init() {
    for (var i = document.getElementsByTagName("P").length - 1; i >= 0; i--)         {
        document.getElementsByTagName("P")[i].addEventListener("mouseover",     setTimeout(re(this), document.getElementById("input").value));
        document.getElementsByTagName("P")[i].addEventListener("mouseout", rl(this));
    };
}

function re(e) { 
    e.style.border = "thick solid blue";
}
function rl(e) {
    e.style.border = "none";
}

document.getElementByIdinput.innerHTML是事件必须触发的延迟。好的,那么函数ree的参数在哪里?对于e,您必须在setTimeout调用中将该值作为第三个参数传递。输入的另一件事是什么类型的元素?“输入”是哪种类型的控件?表示标签或文本框?