好的,所以这里有一个关于 Firefox 没有响应 window.event 的问题,这里经常被问到,你需要在函数中添加一个额外的参数。我对此没有任何问题;我的问题是,如果我想从不同的 Javascript 函数中分配事件侦听器,我该怎么做?
基本上,我想要做的是一个常见的效果,当你可以有一个带有灰色文本的表单框,例如,“你的名字......”然后当你单击框时,文本消失并且颜色变为黑色;unfocus 框仍然为空,提示文本将返回。
现在,我没有直接为我想要使用它的每个页面编写代码,而是尝试创建一个可以使用表单 ID 调用的函数,它会自动将其应用于每个输入元素。这是代码:
function fadingForm(formElementID, endColor)
{
var form = document.getElementById(formElementID);
for(var i = 0; i < form.elements.length; i++)
{
form.elements[i].originalValue = form.elements[i].value;
form.elements[i].originalColor = form.elements[i].style.color;
form.elements[i].changedColor = endColor;
// Somehow I need to get that event parameter in here I guess?
// I tried just putting the variable event in as a parameter,
// but as you'd expect, that doesn't work.
form.elements[i].onfocus = function() { focused(); };
form.elements[i].onblur = function() { blurred(); };
}
}
function focused(e)
{
evt = e || window.event;
element = evt.target;
if(element.value == "" || element.value == element.originalValue)
{
element.value = "";
element.style.color = element.changedColor;
}
}
function blurred(e)
{
evt = e || window.event;
element = evt.target;
if(element.value == "" || element.value == element.originalValue)
{
element.value = element.originalValue;
element.style.color = element.originalColor;
}
}
当然,这在 Chrome、Safari 等中非常有效……只是在 Firefox 中不行。