Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

perl javascript help passing varable

by winracer (Initiate)
on Oct 15, 2009 at 01:34 UTC ( [id://801258]=perlquestion: print w/replies, xml ) Need Help??

winracer has asked for the wisdom of the Perl Monks concerning the following question:

I have been trying this code http://www.dynamicdrive.com/dynamici...agetooltip.htm but can't get my varable $number on the page to pass to the varable $number in the head ? any thoughts? here is the code in the <head>
<script type="text/javascript"> /*********************************************** * Image w/ description tooltip- By Dynamic Web Coding (www.dyn-web.com +) * Copyright 2002-2007 by Sharon Paine * Visit Dynamic Drive at http://www.dynamicdrive.com/ http://www.dynam +icdrive.com/dynamicindex4/imagetooltip.htm for full source code ***********************************************/ /* IMPORTANT: Put script after tooltip div or put tooltip div just before </BODY>. */ var dom = (document.getElementById) ? true : false; var ns5 = (!document.all && dom || window.opera) ? true: false; var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : f +alse; var ie4 = (document.all && !dom) ? true : false; var nodyn = (!ns5 && !ie4 && !ie5 && !dom) ? true : false; var origWidth, origHeight; // avoid error of passing event object in older browsers if (nodyn) { event = "nope" } /////////////////////// CUSTOMIZE HERE //////////////////// // settings for tooltip // Do you want tip to move when mouse moves over link? var tipFollowMouse= true; // Be sure to set tipWidth wide enough for widest image var tipWidth= 160; var offX= 20; // how far from mouse to show tip var offY= 12; var tipFontFamily= "Verdana, arial, helvetica, sans-serif"; var tipFontSize= "8pt"; // set default text color and background color for tooltip here // individual tooltips can have their own (set in messages arrays) // but don't have to var tipFontColor= "#000000"; var tipBgColor= "#DDECFF"; var tipBorderColor= "#000080"; var tipBorderWidth= 3; var tipBorderStyle= "ridge"; var tipPadding= 4; // tooltip content goes here (image, description, optional bgColor, op +tional textcolor) var messages = new Array(); // multi-dimensional arrays containing: // image and text for tooltip // optional: bgColor and color to be sent to tooltip messages[0] = new Array('upload/$number.gif','$number.gif',"#FFFFFF"); messages[1] = new Array('upload/$number.jpg','$number.jpg',"#DDECFF"); messages[2] = new Array('/upload/test.gif','Test description','black', +'white'); //////////////////// END OF CUSTOMIZATION AREA /////////////////// // preload images that are to appear in tooltip // from arrays above if (document.images) { var theImgs = new Array(); for (var i=0; i<messages.length; i++) { theImgs[i] = new Image(); theImgs[i].src = messages[i][0]; } } // to layout image and text, 2-row table, image centered in top cell // these go in var tip in doTooltip function // startStr goes before image, midStr goes between image and text var startStr = '<table width="' + tipWidth + '"><tr><td align="center" + width="100%"><img src="'; var midStr = '" border="0"></td></tr><tr><td valign="top">'; var endStr = '</td></tr></table>'; //////////////////////////////////////////////////////////// // initTip - initialization for tooltip. // Global variables for tooltip. // Set styles // Set up mousemove capture if tipFollowMouse set true. //////////////////////////////////////////////////////////// var tooltip, tipcss; function initTip() { if (nodyn) return; tooltip = (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getE +lementById('tipDiv'): null; tipcss = tooltip.style; if (ie4||ie5||ns5) { // ns4 would lose all this on rewrites tipcss.width = tipWidth+"px"; tipcss.fontFamily = tipFontFamily; tipcss.fontSize = tipFontSize; tipcss.color = tipFontColor; tipcss.backgroundColor = tipBgColor; tipcss.borderColor = tipBorderColor; tipcss.borderWidth = tipBorderWidth+"px"; tipcss.padding = tipPadding+"px"; tipcss.borderStyle = tipBorderStyle; } if (tooltip&&tipFollowMouse) { document.onmousemove = trackMouse; } } window.onload = initTip; ///////////////////////////////////////////////// // doTooltip function // Assembles content for tooltip and writes // it to tipDiv ///////////////////////////////////////////////// var t1,t2; // for setTimeouts var tipOn = false; // check if over tooltip link function doTooltip(evt,num) { if (!tooltip) return; if (t1) clearTimeout(t1); if (t2) clearTimeout(t2); tipOn = true; // set colors if included in messages array if (messages[num][2]) var curBgColor = messages[num][2]; else curBgColor = tipBgColor; if (messages[num][3]) var curFontColor = messages[num][3]; else curFontColor = tipFontColor; if (ie4||ie5||ns5) { var tip = startStr + messages[num][0] + midStr + '<span style= +"font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; co +lor:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr; tipcss.backgroundColor = curBgColor; tooltip.innerHTML = tip; } if (!tipFollowMouse) positionTip(evt); else t1=setTimeout("tipcss.visibility='visible'",100); } var mouseX, mouseY; function trackMouse(evt) { standardbody=(document.compatMode=="CSS1Compat")? document.documen +tElement : document.body //create reference to common "body" across d +octypes mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scr +ollLeft; mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scr +ollTop; if (tipOn) positionTip(evt); } ///////////////////////////////////////////////////////////// // positionTip function // If tipFollowMouse set false, so trackMouse function // not being used, get position of mouseover event. // Calculations use mouseover event position, // offset amounts and tooltip width to position // tooltip within window. ///////////////////////////////////////////////////////////// function positionTip(evt) { if (!tipFollowMouse) { standardbody=(document.compatMode=="CSS1Compat")? document.doc +umentElement : document.body mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody +.scrollLeft; mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody +.scrollTop; } // tooltip width and height var tpWd = (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth; var tpHt = (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight; // document area in view (subtract scrollbar width for ns) var winWd = (ns5)? window.innerWidth-20+window.pageXOffset: standa +rdbody.clientWidth+standardbody.scrollLeft; var winHt = (ns5)? window.innerHeight-20+window.pageYOffset: stand +ardbody.clientHeight+standardbody.scrollTop; // check mouse position against tip and window dimensions // and position the tooltip if ((mouseX+offX+tpWd)>winWd) tipcss.left = mouseX-(tpWd+offX)+"px"; else tipcss.left = mouseX+offX+"px"; if ((mouseY+offY+tpHt)>winHt) tipcss.top = winHt-(tpHt+offY)+"px"; else tipcss.top = mouseY+offY+"px"; if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",1 +00); } function hideTip() { if (!tooltip) return; t2=setTimeout("tipcss.visibility='hidden'",100); tipOn = false; } document.write('<div id="tipDiv" style="position:absolute; visibility: +hidden; z-index:100"></div>') </script>
and here is the code in the perl script
$number = $fields[$index_of_db_id]; print qq~<td bgcolor="$short_results_background_color" align=center> <a href="#" onmouseover="doTooltip(event,0)" onmouseout="hideTip()"><i +mg src="$graphics_dir/smallcamera.gif" width=16 height=12 border=0 al +t="$number"></a> </td>~; } elsif (-e "$upload_path/$number.jpg") { print qq~<td bgcolor="$short_results_background_color" align=center> <a href="#" onmouseover="doTooltip(event,1)" onmouseout="hideTip()"><i +mg src="$graphics_dir/smallcamera.gif" width=16 height=12 border=0 al +t="$number"></a> </td>~; } else { print qq~<td bgcolor="$short_results_background_color" align=center> +—</td>~; } } else { print qq~<td bgcolor="$short_results_background_color" align=center>—< +/td>~;
Winracer
Jack of all trades master of none
http://www.helpmewithperl.com
“Only a life lived for others is a life worth while” Albert Einstein
“The golden rule for every business man is this: 'Put yourself in your customer’s place'” Orison Swett Marden
“No person was ever honored for what he received; honor has been the reward for what he gave” Calvin Coolidge

Replies are listed 'Best First'.
Re: perl javascript help passing varable
by thunders (Priest) on Oct 15, 2009 at 03:38 UTC
    I don't really understand the question. Is perl generating the page the javascript is on? In that case the number variable should be filled in as long as you put the content you are generating in a double quoted string(and assuming you assign a value to $number before you try to use it). But you show the javascript as a separate block. If you do something like the following, your $number should be replaced successfully.
    $number = 7; print << "END_OF_HTML"; <html> <head> <script type="text/javascript"> /* ... a bunch of JS .. */ messages[0] = new Array('upload/$number.gif','$number.gif',"#FFFFFF"); messages[1] = new Array('upload/$number.jpg','$number.jpg',"#DDECFF"); messages[2] = new Array('/upload/test.gif','Test description','black', +'white'); /* ... a bunch of JS .. */ </script> </head> <!-- HTML body stuff --> </html> END_OF_HTML
      thanks I have found out that the $number varable is a array in my perl script and on the page I am useing it on it has a while loop in it. the javascript part is in the head and I have it working that it picks up the 1st $number varable so I am thing that i need to pass the $number array to the javascript array. How do you pass arrays
      Winracer Jack of all trades master of none http://www.helpmewithperl.com “Only a life lived for others is a life worth while” Albert Einstein “The golden rule for every business man is this: 'Put yourself in your customer’s place'” Orison Swett Marden “No person was ever honored for what he received; honor has been the reward for what he gave” Calvin Coolidge

        If it was an array it'd be called @number. However $number may be an array reference. If it is an array reference you can dereference it inside of a double quoted string, as in the example below.

        $number = [1,2,3]; @number = (4,5,6); print "$number @$number @number";

        prints something like this:

        ARRAY(0x814cc20) 1 2 3 4 5 6

        Perl's default behavior is to separate an arrays elements with spaces in double quoted context. If you instead wanted to separate with commas you could do something like this:

        my $comma_sep_number = join(",",@$number); print "My Array Contains: $comma_sep_number";

        prints:

        My Array Contains: 1,2,3

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://801258]
Approved by planetscape
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2025-03-25 22:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    When you first encountered Perl, which feature amazed you the most?










    Results (67 votes). Check out past polls.

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.