Link to home
Start Free TrialLog in
Avatar of SubhaBabu
SubhaBabu

asked on

code error...a simple javascript problem...urgent**

Hi,
This code works great for tooltip. but the only problem is...if the strHTM is not defined in the tooltip then it says undefined in the tooltip... how to avoid that? for example...if my code says <a href="#" onMouseover="tooltip(welcome);">welcome</a> then it works gr8...if i am saying <a href="#" onMouseover="tooltip();">welcome</a> then it says undefined...i need a logic to validate that....urgent please.


<html>
<head>
<script>
var oPopup = window.createPopup();
function tooltip(strHTML, oNavigate)
{      
      oPopup.hide();
      oPopup.document.navigateTo = oNavigate;
      oPopup.document.desiredX = event.screenX+12;
      oPopup.document.desiredY = event.screenY+12;    
      if(strHTML!=""){
            oPopup.document.body.innerHTML = '<table style=\'background:#ffffcc; border:1px solid black; padding:4px; font-family:tahoma; font-size:10px; width:100%;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=white, EndColorStr=yellowgreen)\' ><tr><td><table style=\'background:#ffffcc; border:1px solid yellowgreen; padding:4px; font-family:tahoma; font-size:10px; width:100%;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=yellowgreen, EndColorStr=white)\' ><tr><td>' + strHTML + '</td></tr></table></td></tr></table>';
      }
      oPopup.document.timerID = setTimeout("showtooltip()", 500);
}
function showtooltip()
{
      // This popup is temporary and is used only to detect what height the popup should be displayed. This is important because the
      // popup size will vary between definition text lengths.
      var popupBody = oPopup.document.body;
      oPopup.show(0,0,0,0);
      var realHeight = popupBody.scrollHeight;
      var realWidth = popupBody.scrollWidth;
      //hide the dimension detector popup.
      oPopup.hide();
      //Show the actual popup with correct width and height.
      oPopup.show(oPopup.document.desiredX, oPopup.document.desiredY,realWidth, realHeight);      
}
function hidetooltip()
{
      oPopup.hide();
      // cancel delayed display of tooltip
      if (oPopup.document.timerID)
      {
            clearTimeout(oPopup.document.timerID);
            oPopup.document.timerID = 0;
      }
}
</script>
</head>
<BODY>
<a href="#" onMouseOver="tooltip()">Welcome</a>
</body>
</html>
Avatar of StormyWaters
StormyWaters
Flag of United States of America image

Change:
 if(strHTML!=""){
to:
 if(strHTML!=null){

and it won't show a tooltip at all if no text is specified.
You could also make it show some default text by changing the tooltip() function to:

function tooltip(strHTML, oNavigate)
{    
     oPopup.hide();
     oPopup.document.navigateTo = oNavigate;
     oPopup.document.desiredX = event.screenX+12;
     oPopup.document.desiredY = event.screenY+12;    
     if(strHTML==null) {
       strHTML = "Your default message";
     }
          oPopup.document.body.innerHTML = '<table style=\'background:#ffffcc; border:1px solid black; padding:4px; font-family:tahoma; font-size:10px; width:100%;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=white, EndColorStr=yellowgreen)\' ><tr><td><table style=\'background:#ffffcc; border:1px solid yellowgreen; padding:4px; font-family:tahoma; font-size:10px; width:100%;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=yellowgreen, EndColorStr=white)\' ><tr><td>' + strHTML + '</td></tr></table></td></tr></table>';
     oPopup.document.timerID = setTimeout("showtooltip()", 500);
}


Avatar of SubhaBabu
SubhaBabu

ASKER

Thanks for your immediate reply....your solution works...if it has only one link ....if i add like

<a href="#" onMouseOver="tooltip()">Welcome</a> <a href="#" onMouseOver="tooltip('you there')">Welcome</a>

this...it shows "you there" for both the links
And i do not want to give a default message, since i am gonna use this in too many places...
That doesn't happen for me. IE, obviously, because this doesn't work anywhere else. Version 6.0. What version are you looking at?
i want it to work only in IE 6....
Oh, wait, yes it does. Will look.
ASKER CERTIFIED SOLUTION
Avatar of StormyWaters
StormyWaters
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Hi there...

Its still has the problem....
Okay... I have no idea then. Because it works fine for me.