我有一个带有链接的html页面和我正在调用的链接的onMouseOver
return escape(showToolTip())
function showToolTip(){
alert(document.getElementById('toggleFlag'));
var text;
alert(document.getElementById('toggleFlag').value);
if(document.getElementById('toggleFlag').value == false){
text = 'hide';
alert('hide');
}else{
text = 'show';
alert('show');
}
此功能在页面加载时调用,当我鼠标悬停时,我得到显示。当我鼠标移出并再次鼠标悬停时,它显示为'show'但从不调用该函数。
我在哪里做错了?
答案 0 :(得分:1)
我的猜测是,当您设置事件处理程序时,您要在要调用的方法上包括括号。
如:
onMouseOver = showTooltip()
这会导致事件立即触发,而处理程序只能获得已经执行的方法的结果。
如果是这种情况,您将需要通过删除括号来更改事件处理程序。
onMouseOver = showTooltip
正如下面的评论中指出的那样,这不能解决诸如以下问题的处理事件:
<div onmouseover="foo()">
在页面加载时不会触发。
答案 1 :(得分:0)
同样,根据我的评论,我不知道你的其他实现是什么样的,但你实际上从来没有在你的方法中切换'toggleValue'的值......
function showToolTip(){
var text;
if(document.getElementById('toggleFlag').value == false){
// TOGGLE TO TRUE
document.getElementById('toggleFlag').value = true;
text = 'hide';
alert('hide');
}
else {
// TOGGLE TO FALSE
document.getElementById('toggleFlag').value = false;
text = 'show';
alert('show');
}
}
答案 2 :(得分:0)
在你的真假之间加上引号。您正在将字符串与js bool进行比较,而不是将元素内的值进行比较。
if(document.getElementById('toggleFlag').value == "false"){
text = 'hide';
alert('hide');
}else{
text = 'show';
alert('show');
}
我所看到的一个小提琴就在这里:http://jsfiddle.net/k7mJX/