Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

setTimeout problem

Posted on 2005-04-18
6
Medium Priority
?
479 Views
Last Modified: 2010-05-18
Can anyone tell me why the following code doesn't work?

function ddrivetip(thetext, thewidth, thecolor){
      setTimeout("mgddrivetip('" + thetext + "','" + thewidth + "','" thecolor + "')", 1000);
}

function mgddrivetip(thetext, thewidth, thecolor){
   if (ns6||ie){
     if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
     if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
     tipobj.innerHTML=thetext
     enabletip=true
     return false
  }
}


ie is throwing an object expected error, but for the life of me I can't figure it out.  BTW, there is more code than this, but the error only occurs when using setTimeout, so I know the error lies therein.

0
Comment
Question by:ldsnerd
  • 3
  • 3
6 Comments
 
LVL 32

Expert Comment

by:Batalf
ID: 13808091
A + sign is missing in front of "thecolor".

setTimeout("mgddrivetip('" + thetext + "','" + thewidth + "','" thecolor + "')", 1000);

should be

setTimeout("mgddrivetip('" + thetext + "','" + thewidth + "','" + thecolor + "')", 1000);
0
 

Author Comment

by:ldsnerd
ID: 13808847
Sorry, I missed that when testing but it still doesn't work even with the plus sign in.  IE tells me that its an "invalid Property Value".  
0
 
LVL 32

Expert Comment

by:Batalf
ID: 13809074
Could you post some more code. Your example works when I try it.

<body>
<script>
function ddrivetip(thetext, thewidth, thecolor){
     setTimeout("mgddrivetip('" + thetext + "','" + thewidth + "','" + thecolor + "')", 1000);
}

function mgddrivetip(thetext, thewidth, thecolor){
      var ns6 = true;
      var ie=true;
   if (ns6||ie){
          thewidth = thewidth+"";
          thecolor = thecolor+"";
     if (thewidth!="undefined") tipobj.style.width=thewidth+"px"
     if (thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
     tipobj.innerHTML=thetext
     enabletip=true
     return false
  }
}

</script>
<body>
<div id="tipobj"></div>
<script>
ddrivetip('test','400','#FF0000');
</script>
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:ldsnerd
ID: 13809464
Full code (its long):


<script type="text/javascript">

/***********************************************
* Cool DHTML tooltip script II- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

var offsetfromcursorX=12 //Customize x offset of tooltip
var offsetfromcursorY=10 //Customize y offset of tooltip

var offsetdivfrompointerX=10 //Customize x offset of tooltip DIV relative to pointer image
var offsetdivfrompointerY=14 //Customize y offset of tooltip DIV relative to pointer image. Tip: Set it to (height_of_pointer_image-1).

document.write('<div id="dhtmltooltip"></div>') //write out tooltip DIV
document.write('<img id="dhtmlpointer" src="<?=GRAPHICS_DIR?>/arrow2.gif">') //write out pointer image

var ie=document.all
var ns6=document.getElementById && !document.all
var enabletip=false
if (ie||ns6)
var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""

var pointerobj=document.all? document.all["dhtmlpointer"] : document.getElementById? document.getElementById("dhtmlpointer") : ""

function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function ddrivetip(thetext, thewidth, thecolor){
//      pausecomp(1200);
//
      mgddrivetip(thetext, thewidth, thecolor);
//      setTimeout("mgddrivetip('" + thetext + "','" + thewidth + "','" + thecolor + "')", 1000);
}

function mgddrivetip(thetext, thewidth, thecolor){
if (ns6||ie){
if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
tipobj.innerHTML=thetext
enabletip=true
return false
}
}

function positiontip(e){
      if (enabletip){
            var nondefaultpos=false
            var curX=(ns6)?e.pageX : event.x+ietruebody().scrollLeft;
            var curY=(ns6)?e.pageY : event.y+ietruebody().scrollTop;
            //Find out how close the mouse is to the corner of the window
            var winwidth=ie&&!window.opera? ietruebody().clientWidth : window.innerWidth-20
            var winheight=ie&&!window.opera? ietruebody().clientHeight : window.innerHeight-20
      
            var rightedge=ie&&!window.opera? winwidth-event.clientX-offsetfromcursorX : winwidth-e.clientX-offsetfromcursorX
            var bottomedge=ie&&!window.opera? winheight-event.clientY-offsetfromcursorY : winheight-e.clientY-offsetfromcursorY

            var leftedge=(offsetfromcursorX<0)? offsetfromcursorX*(-1) : -1000

            //if the horizontal distance isn't enough to accomodate the width of the context menu
            if (rightedge<tipobj.offsetWidth){
            //move the horizontal position of the menu to the left by it's width
            tipobj.style.left=curX-tipobj.offsetWidth+"px"
            nondefaultpos=true
      }
      else if (curX<leftedge)
            tipobj.style.left="5px"
else{
//position the horizontal position of the menu where the mouse is positioned
      tipobj.style.left=curX+offsetfromcursorX-offsetdivfrompointerX+"px"
      pointerobj.style.left=curX+offsetfromcursorX+"px"
}

//same concept with the vertical position
if (bottomedge<tipobj.offsetHeight){
      tipobj.style.top=curY-tipobj.offsetHeight-offsetfromcursorY+"px"
      nondefaultpos=true
}
else{
      tipobj.style.top=curY+offsetfromcursorY+offsetdivfrompointerY+"px"
      pointerobj.style.top=curY+offsetfromcursorY+"px"
}
      tipobj.style.visibility="visible"
if (!nondefaultpos)
      pointerobj.style.visibility="visible"
else
      pointerobj.style.visibility="hidden"
}
}

function hideddrivetip(){
      if (ns6||ie){
      enabletip=false
      tipobj.style.visibility="hidden"
      pointerobj.style.visibility="hidden"
      tipobj.style.left="-1000px"
      tipobj.style.backgroundColor=''
      tipobj.style.width=''
      }
}

document.onmousemove=positiontip

</script>

<a href='email' onMouseover=\"ddrivetip('Email somebody something', 300)\"; onMouseout=\"hideddrivetip()\">Email</a><br>
0
 
LVL 32

Accepted Solution

by:
Batalf earned 2000 total points
ID: 13809481
It works fine when I change your link from

<a href='email' onMouseover=\"ddrivetip('Email somebody something', 300)\"; onMouseout=\"hideddrivetip()\">Email</a><br>

to

<a href='email' onMouseover="ddrivetip('Email somebody something', 300)" onMouseout="hideddrivetip()">Email</a><br>
0
 

Author Comment

by:ldsnerd
ID: 13809765
Had a conflict with another portion of the javascript...thanks for testing this for me.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

JavaScript can be used in a browser to change parts of a webpage dynamically. It begins with the following pattern: If condition W is true, do thing X to target Y after event Z. Below are some tips and tricks to help you get started with JavaScript …
Boost your ability to deliver ambitious and competitive web apps by choosing the right JavaScript framework to best suit your project’s needs.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
Suggested Courses

581 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question