2011-08-18 106 views
0

我有一个HTML页面与该路段的路段和的onMouseOver我打电话 return escape(showToolTip())为什么JavaScript onmouseover函数在页面加载时被调用?

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

它不会出现你toggleFlag的价值永远设置为false。 – Brian

+0

Im在onClick函数上设置为false我有这个链接..在任何情况下,我想我应该看到鼠标悬停的第一个提醒 – Mahi

+0

嗯...忽略我的答案,然后因为我不知道你的问题是什么那么:)你是什么意思的“第一次警报”?你的意思是,第一个警报(document.getElementById('toggleFlag))?你的意思是警告(doc.get(toggleFlag).value)?你的意思是警戒(表演)?更多的代码和更多的细节可能会在这里帮助很大。 – Brian

回答

1

我的猜测是,当你设置你的事件处理程序时,你将在你想调用的方法中包括括号。

如:

onMouseOver = showTooltip() 

这会导致立即触发事件和处理程序只给一个已经执行的方法的结果。

如果是这种情况,您需要通过删除括号来更改事件处理程序。

onMouseOver = showTooltip 

正如下面的评论中指出,这是不占declerative事件处理如:

<div onmouseover="foo()"> 

,不会在页面加载时触发。

+0

几乎降低了你的这一点 - 你应该在这里更加明确,并提到这只适用于命令性的,而不是声明性的事件处理。即''div onmouseover =“foo();” >是完全可以接受的,不会在负载上起火。 – Brian

+0

谢谢Brian。我在回答中包含了这条信息。 –

+0

+1为跟进和一个可能的原因为某人,如果不是这个人。 – Brian

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');   
    } 
} 
0

认沽引用你的真假。你正在比较一个字符串到一个js布尔,而不是元素内的值。

if(document.getElementById('toggleFlag').value == "false"){ 
      text = 'hide'; 
      alert('hide'); 
     }else{ 
      text = 'show';  
      alert('show'); 
     } 

我所看到的小提琴是在这里:http://jsfiddle.net/k7mJX/

+0

几乎立即删除了downvote - 我不知道== vs ===是布尔值的特殊例外。 – Brian

+0

呃这个答案不能解决他的直接问题,无论如何,如果他在页面加载时获得警报框 – scrappedcola

+0

出于测试目的,我删除了所有内容。我只有一个showToolTip函数,它警告hello并返回hello。在mouseover函数上,我将它称为onmouseover =“return escape(showToolTip());”。当我打开网址时,我在页面上显示你好提醒。 – Mahi

相关问题