Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    problemi abbinamento eventi a createElement

    Ciao a tutti,
    ho il seguente problema:
    da un iframe dovrei creare, ad esempio, una tabella, e ad una casella di questa tabella associare un evento...
    quindi una cosa del genere
    codice:
    <script language='javascript'>
    var Padre=parent.document.getElementById('MenuPrincipale');
    var TablePrincipale=parent.document.createElement("table");
    var tblBody = parent.document.createElement("tbody");
    var row = parent.document.createElement("tr");
    var cell = parent.document.createElement("td");
    cell.setAttribute("style","width:90; color:yellow; cursor:pointer;");
    cell.setAttribute("id","pippo");
    cell.setAttribute("onclik",function() { alert("moot!"); });
    var cellText = parent.document.createTextNode("Messaggi");
    cell.appendChild(cellText); 
    row.appendChild(cell);
    tblBody.appendChild(row);
    TablePrincipale.appendChild(tblBody);
    Padre.appendChild(TablePrincipale);
    TablePrincipale.setAttribute("style", "font-size:12px; color:yellow;");
      </script>
    ... ovviamente poi diventerò (anzi diventeremo ) matto per farlo funzionare sia con ff che con ie...

    grazie per l'aiuto !!!!

    ps: auttualmente non mi funziona con nessuno dei due browser ... (nessun errore ma nessun effetto)...
    altra cosa su ie ... la scritta messaggio non è in giallo

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se fai cosi' non avrai nessun problema di compatibilita':

    cell.setAttribute("onclik",function() { alert("moot!"); });
    a parte l' onclick
    i gestori eventi non sono universalmente considerati attributi, quindi non e' il caso di settarli come attributi

    poi, se l' elemento lo crei tu non c'e' il rischio di sovrascrivere altri eventuali funzioni da far scattare all' evento, puoi quindi settarlo brutalmente
    cell.onclick=function() { alert("moot!"); };

    passiamo allo style, anche qui non e' opportuno assegnarlo come attributo
    i valori per proprieta' (in camelCase, es. fontSize) vanno specificati individualmente
    cell.style.width='90px';
    cell.style.color='yellow';
    cell.style.cursor='pointer';

    il solo IE supporta una proprieta' (che altrove e' di sola lettura) per settare una stringa come stile
    cell.style.cssText="{width:90; color:yellow; cursorointer;}";

  3. #3
    Ti ringrazio !!!
    non so se sbaglio io ma ...
    ..purtroppo così come indicato, non funziona:
    l'errore, ho provato solo su ff, mi riporta il seguente errore sul codice dell'iframe:
    ClickOn is not defined; credo che il problema sia che la funzione ClickOn sia definita sul documento principale e non su l'iframe

    Altre soluzioni ?

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    cosa scrivi esattamente?

  5. #5
    Il codice dell'iframe che crea la tabella e la cella è

    codice:
    <script language='javascript'>
    var Padre=parent.document.getElementById('MenuPrincipale');
    var TablePrincipale=parent.document.createElement("table");
    var tblBody = parent.document.createElement("tbody");
    var row = parent.document.createElement("tr");
    var cell = parent.document.createElement("td");
    cell.setAttribute("style","width:90; color:yellow; cursor:pointer;");
    cell.setAttribute("id","pippo");
     cell.onclick=function() {ClickOn(this.id)} 
    var cellText = parent.document.createTextNode("Messaggi");
    cell.appendChild(cellText); 
    row.appendChild(cell);
    tblBody.appendChild(row);
    TablePrincipale.appendChild(tblBody);
    Padre.appendChild(TablePrincipale);
    TablePrincipale.setAttribute("style", "font-size:12px; color:yellow;");
      </script>
    mentre sulla pagina che richiama l'iframe...
    codice:
       <script language="JavaScript">
     
    
    function ClickOn (Id)
     {
      var  VarId = document.getElementById(Id);
      Pressed=VarId.id;
      alert (Pressed);
     }
      </script>
    con questo codice, fatto girare su firefox, non ho errori ma non funziona (non da il messaggio).

    Se sostituisco nella riga
    codice:
     cell.onclick=function() {ClickOn(this.id)}
    ClickOn(this.id) con alert ('ciccio'); funziona regolarmente.
    Il problema, credo di aver capito, è che la funzione che voglio richiamare non è nell'iframe ma nella pagina che richima l'iframe stesso !!!!

  6. #6
    ... inoltre se inserisco:
    codice:
     cell.onclick=function() {ClickOn('pippo');}
    ho il segunete errore:
    Errore: ClickOn is not defined
    sulla parte di codice


    codice:
     cell.onclick=function() {ClickOn('pippo');}

  7. #7
    Questa è la parte di codice dell'iframe
    [CODE]
    <script language='javascript'>
    var Padre=parent.document.getElementById('MenuPrincipa le');
    var TablePrincipale=parent.document.createElement("tab le");
    var tblBody = parent.document.createElement("tbody");
    var row = parent.document.createElement("tr");
    var cell = parent.document.createElement("td");
    cell.setAttribute("style","width:90; color:yellow; cursorointer;");
    cell.setAttribute("id","pippo");
    cell.onclick=function() {ClickOn(this.id)}
    var cellText = parent.document.createTextNode("Messaggi");
    cell.appendChild(cellText);
    row.appendChild(cell);
    tblBody.appendChild(row);
    TablePrincipale.appendChild(tbl

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    la funzione e' nel parent
    cell.onclick=function(){parent.ClickOn(this.id);}

  9. #9
    Grazie 10000000000000000000000000000000000000000000000000 00000000!!!!!!!!!!!!!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.