为什么在页面加载时调用javascript onmouseover函数?

时间:2011-08-18 16:53:48

标签: javascript

我有一个带有链接的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'但从不调用该函数。

我在哪里做错了?

3 个答案:

答案 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/