Avatar billede simsen Mester
30. marts 2009 - 06:51 Der er 6 kommentarer og
1 løsning

Forstørrelse af billede

Hej,

Jeg har på http://www.vitro.dk/catalog/index.php?cPath=33_100_114_241_615 set en funktion, hvor billedet bliver forstørret ved mouse over.

Denne forsøger jeg så at genbruge, men kan bare ikke få det til at virke. Den viser ikke billedet ved mouse over og jeg får en fejl på siden, der siger tooltip is null

Nogen der kan fortælle mig, hvad fejlen er, hvorfor og hvordan jeg retter den?

Fejlen kommer ved følgende linje:
tipcss = tooltip.style;

Hele koden ser ud som følgende:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>[Ingen titel]</title>
<meta name="Generator" content="Stone's WebWriter 4">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<script language="javascript" type="text/javascript">
<!--
var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;
var origWidth, origHeight;

if (nodyn) { event = "nope" }

var tipWidth= 510;
var offX= 20;
var offY= 12;
var tipFontFamily= "Verdana, arial, helvetica, sans-serif";
var tipFontSize= "8pt";
var tipFontColor= "#000000";
var tipBgColor= "#eeeeee"; // "#DDECFF";
var tipBorderColor= "#000000";
var tipBorderWidth= 3;
var tipBorderStyle= "ridge";
var tipPadding= 4;

var startStr = '<table class="infoBoxContents" width="' + tipWidth + '"><tr><td valign="top" align="left" width="100%"><img src="';
var midStr = '" border="0" align="right"></center>';
var endStr = '</td></tr></table>';

var tooltip, tipcss;
function initTip() {
  if (nodyn) return;
  tooltip = (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
  tipcss = tooltip.style;
  if (ie4||ie5||ns5) { 
      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) {
      document.onmousemove = trackMouse;
  }
}

window.onload = initTip;

var t1,t2; 
var tipOn = false;
function doTooltip(evt,num,imgs,wimg,himg) {
  if (!tooltip) return;
  if (t1) clearTimeout(t1);  if (t2) clearTimeout(t2);
  tipOn = true;
  curBgColor = tipBgColor;
  curFontColor = tipFontColor;
  if (ie4||ie5||ns5) {
      var toolwidth = wimg + 10;
      var startStr = '<table class="infoBoxContents" width="' + toolwidth + '"><tr><td valign="top" align="center" valign="center" width="100%"><center><img src="';
      var tip = startStr + imgs + '" width="' + wimg + '" height="'+ himg + midStr + endStr;
      tipcss.backgroundColor = curBgColor;
      tipcss.width = toolwidth+"px";
      tooltip.innerHTML = tip;
  }
  t1=setTimeout("tipcss.visibility='visible'",100);
}

var mouseX, mouseY;
function trackMouse(evt) {
  mouseX = (ns5)? evt.pageX: window.event.clientX + document.body.scrollLeft;
  mouseY = (ns5)? evt.pageY: window.event.clientY + document.body.scrollTop;
  if (tipOn) positionTip(evt);
}

function positionTip(evt) {
  var tpWd = (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
  var tpHt = (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
  var winWd = (ns5)? window.innerWidth-20+window.pageXOffset: document.body.clientWidth+document.body.scrollLeft;
  var winHt = (ns5)? window.innerHeight-20+window.pageYOffset: document.body.clientHeight+document.body.scrollTop;

  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";
}

function hideTip() {
  if (!tooltip) return;
  t2=setTimeout("tipcss.visibility='hidden'",100);
  tipOn = false;
}
             
//-->
</script>
</head>
<body>
<table border="0" width="100%" cellspacing="0" cellpadding="2" class="productListing"> 
  <tr class="productListing-odd">
    <td align="center" class="productListing-data" valign="top"> <a onmouseover="doTooltip(event,0,'Images/Hjerte-11.gif',500,332)" onmouseout="hideTip()" href="http://www.google.dk"><img src="Images/Hjerte-11.gif" border="0" alt="Alt teksten" title="Titel teksten" width="200" height="160" class=shadow1></a> </td>
    </tr></table>


</body>
</html>

mvh
simsen :-)
Avatar billede olebole Juniormester
30. marts 2009 - 09:35 #1
<ole>

Jeg får ikke fejl i de browsere, jeg har  =)

/mvh
</bole>
Avatar billede simsen Mester
30. marts 2009 - 12:57 #2
Hej Ole

Får du den til at vise billedet i større udgave?

Jeg får fejl i både i IE7 og Firefox 3.0 og begge steder vises det større billede heller ikke, når jeg tager musen over billedet.
Avatar billede olebole Juniormester
30. marts 2009 - 14:26 #3
Arrhh ... jeg testede linket - men det er jo ikke din side  ;o)

Denne linje fejler:
    tooltip = (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;

- da du jo ikke har et element med id="tipDiv" i din kode
Avatar billede simsen Mester
30. marts 2009 - 14:35 #4
YES

Du er som sædvanlig en knag...Og nej det var ikke min side - men er vild med den mouse over effekt...... Lige sådan en, jeg har ledt efter :-)

Smid et svar og tak for hjælpen :-)

I mine browsere sagde den det var den her linje:
tipcss = tooltip.style;

lige et tillægs spørgsmål - hvordan fandt du ud af, det var den anden linje? - så jeg også lærer noget af det her :-)
Avatar billede olebole Juniormester
30. marts 2009 - 17:10 #5
Selvtak. Jeg oprettede såmænd bare et dokument med din kode - smed det i min browser - og læste, hvad browseren skrev om linjenummeret i fejlmeddelelsen. Så var det blot at gå til den linje ... voilà!  =)

IE7 sagde noget i stil med:
Linje: 38
Fejl: Et objekt er obligatorisk

- hvilket IE altid siger, hvis noget, den ikke kan finde, bliver adresseret.

Firefox mener, det er linje 39 - og siger 'tooltip is null ... og det er jo heller ikke helt løgn  ;o)
Avatar billede simsen Mester
30. marts 2009 - 18:08 #6
Har en del at lære med det javascript - for hvordan du så får det til den linje, er mig en gåde *GG*
Avatar billede olebole Juniormester
31. marts 2009 - 09:20 #7
Tak for points  =)

Der er linje nummerering i min editor, så det går hurtigt at finde linje 38 - så det var såmænd ikke så svært  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester