Newsgroup: it.comp.lang.javascript
Titolo: Script che non funzica

Il seguente script,richiamato da un OnMouseOver e OnMouseOut cosě
implementato:
<A HREF="#" ONMOUSEOVER="imagerep('prodhd', 'menu0overs');"
ONMOUSEOUT="eraseimage('prodhd', 'menu0overs');" CLASS="menu">
        <IMG SRC="pix/spacer.gif" ALT="" BORDER=0 WIDTH=160 HEIGHT=16
HSPACE=0 NAME="prodhd" VSPACE=0 CLASS="menu"><BR CLASS="menu"></A>
Non funziona a dovere.Cioč,quando sono Over vedo un rettangolino come fosse
"L'immagine manca",quello con la x rossa che indica appunto "manca l'
img".Siccome sono sicuro che l'IMG non manca mi chiedo dov'č l'
errore?Grazie per le risposte.Ecco lo script (E' solo una parte ma dovrebbe
bastare per capire il problema)
function imagerep(imgname, divname){
  if(parseInt(navigator.appVersion) > 3){
    if(document.layers) eval("window.document." + divname + ".document['" +
imgname + "'].src = " + imgname + "over.src");
    else eval("document['" + imgname + "'].src = " + imgname + "over.src");
  }
  else{
    if(navigator.appName == "Netscape"){
      eval("document['imgmenu" + imgname + "'].src = menu" + imgname +
"over.src");
      menustatus[imgname] = "open";
    }
  }
}
<!-- reverses imagerep function -->
function eraseimage(imgname, divname){
  if(parseInt(navigator.appVersion) > 3){
    if(document.layers) eval("window.document." + divname + ".document['" +
imgname + "'].src = blank.src");
    else eval("document['" + imgname + "'].src = blank.src");
  }
  else{
    if(navigator.appName == "Netscape"){
      eval("document['imgmenu" + imgname + "'].src = menu" + imgname +
"off.src");
    }
  }
}
--
Per rispondere togliere le doppie dalla mail

...credo manchi la parte + importante,
una cosa simile a questa:
var prodhd = new Image(110,24);
prodhd.src = "./PIX/nomeimmagine.estensione"
ossia il precaricamento dell'immagine,
occhio a dove fai puntare la proprieta' src dell'oggetto prodhd.
La x rossa e' per quello.
Puoi provare a trappare l'errore col metodo Alert passandogli il contenuto
di "eval"... ah a proposito: perche' non carichi il risultato di eval in una
variabile?
Ciau
Nettuno

>      eval("document['imgmenu" + imgname + "'].src = menu" + imgname +
Se l'immagine esiste probabilmente non fà in tempo a caricarla. Devi precaricarle in oggetti.
var immagine = new Image()
immagine.src = "URL"
if(immagine.complete)
    document.images[0].src = immagine.src
---
the fly on the net
il webmaster più alto del mondo
"the devil inside" 
http://members.tripod.com/netfly
e-mail: 
net...@netbusiness.it

 wrote in message
10hsc9p$snc$1...@fe2.cs.interbusiness.it...

Ops..come non detto.Lo script che ho proposto non bastava.La parte che dici
tu (quella dove devo "precaricare le img") c'è ed è più o meno come dici tu
dovrebbe essere.Facciamo che propongo tutto lo script (abbreviato dato che è
molto ripetitivo):
function init(){
  initialized = 1;
  menustatus[0] = "closed";
if(parseInt(navigator.appVersion) > 3){
    if(navigator.appName == "Netscape"){
      menuovers[0] = window.document.menu0overs;
      menus[0] = window.document.menu0;
}
    else{
      menuovers[0] = document.all.menu0overs.style;
      menus[0] = document.all.menu0.style;
    }
  }
}
<!-- shows visible layers -->
function show(menunumber){
  if(parseInt(navigator.appVersion) < 4){}
    else{
      if(menuovers[menunumber]){
        menuovers[menunumber].visibility = 'visible';
        menuovers[menunumber].zIndex = '310';
      }
    menus[menunumber].visibility = 'visible';
    menus[menunumber].zIndex = '300';
    menustatus[menunumber] = 'open';
  }
}
<!-- kills invisible layers on roll-off -->
function kohrkill(){
  change('imgmenu0','ball_prod',0);
 if(parseInt(navigator.appVersion) > 3){
    for(i=0; i<menus.length; i++){
      if(menustatus[i] == 'open'){
        if(menuovers[i]){
          menuovers[i].visibility = 'hidden';
          menuovers[i].zIndex = '110';
        }
        menus[i].visibility = 'hidden';
        menus[i].zIndex = '100';
        menustatus[i] = 'closed';
      }
    }
  }
  else{
    if(navigator.appName=="Netscape"){
      for(i=0; i<menustatus.length; i++){
        if(menustatus[i] != "closed"){
          eraseimage(i);
          menustatus[i] = "closed";
        }
      }
    }
  }
}
<!-- preloads graphics -->
if(parseInt(navigator.appVersion) > 3){
  var blank = new Image();
  blank.src = "pix/spacer.gif";
// main nav pix
  var ball_prod0 = new Image(84,83);
    ball_prod0.src = "pix/balls_prod_up.jpg";
  var ball_prod3 = new Image(84,83);
    ball_prod3.src = "pix/balls_prod_over.jpg";
  var ball_part0 = new Image(85,83);
    ball_part0.src = "pix/balls_part_up.jpg";
  var ball_part3 = new Image(85,83);
    ball_part3.src = "pix/balls_part_over.jpg";
// pulldown menu pix
  var prodhdover = new Image (160,16);
    prodhdover.src = "pix/m_prod_hd.gif";
  var prod1over = new Image(160,15);
    prod1over.src = "pix/m_prod_1_over.gif";
}
else{
  if(navigator.appName == "Netscape"){
    var blank = new Image();
    blank.src = "pix/spacer.gif";
// main nav pix
    var ball_prod0 = new Image(84,83);
      ball_prod0.src = "pix/balls_prod_up.jpg";
    var ball_prod3 = new Image(84,83);
      ball_prod3.src = "pix/balls_prod_over.jpg";
    var ball_part0 = new Image(85,83);
      ball_part0.src = "pix/balls_part_up.jpg";
  }
}
<!-- image swapper -->
function imagerep(imgname, divname){
  if(parseInt(navigator.appVersion) > 3){
    if(document.layers) eval("window.document." + divname + ".document['" +
imgname + "'].src = " + imgname + "over.src");
    else eval("document['" + imgname + "'].src = " + imgname + "over.src");
  }
  else{
    if(navigator.appName == "Netscape"){
      eval("document['imgmenu" + imgname + "'].src = menu" + imgname +
"over.src");
      menustatus[imgname] = "open";
    }
  }
}
<!-- reverses imagerep function -->
function eraseimage(imgname, divname){
  if(parseInt(navigator.appVersion) > 3){
    if(document.layers) eval("window.document." + divname + ".document['" +
imgname + "'].src = blank.src");
    else eval("document['" + imgname + "'].src = blank.src");
  }
  else{
    if(navigator.appName == "Netscape"){
      eval("document['imgmenu" + imgname + "'].src = menu" + imgname +
"off.src");
    }
  }
}
<!-- netscape kill-function qualifier -->
function netscapehider()
{
  if(initialized) kohrkill();
}
<!-- explorer kill-function qualifier -->
function iehider()
{
  if(window.event.toElement && window.event.toElement.className != "menu")
kohrkill();
}
function change(Name,Image,No,Msg) {
  if (document.images) {
    if((parseInt(navigator.appVersion) > 3) && (No == 1)) document
[Name].src = eval(Image + "3.src");
  else document [Name].src = eval(Image + No + ".src");
  }
  if (Msg) self.status = eval(Image + "2");
  return true
}
// -->
Se dovesse mancare corrispondenza tra il numero di menu dichiarati e quelli
presenti non preoccupatevi,come dicevo è molto ripetitivo e quindi ho
tagliato un po' di testo.Le chiamate sono quelle che dicevo nel Msg.
originale.
Non riesco a venirne a capo!!!!