Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di hcka
    Registrato dal
    Oct 2002
    Messaggi
    435

    JS onmouseover onmouseout onclick da js

    Il mio codice:
    codice:
    013|      onload = function() {
    [...]
    065|        showColorTable(0);
    066|        allIsOk = true;
    067|        return;
    068|      }
    [...]
    084|      function showColorTable(no) {
    085|        allIsOk = false;
    086|        if (document.all) {
    087|          for (i = 0; i < coloriA[no].length; i++) {
    088|            for (j = 0; j < coloriA[no][i].length; j++) {
    089|              obj = eval("document.all.c" + i + "_" + j);
    090|              obj.style.border = "2 solid " +
                        coloriA[no][i][j][0];
    091|              obj.style.background = coloriA[no][i][j][0];
    092|              obj.style.cursor = "hand";
    093|              obj.onmouseover = colorize(obj, '#00548C');
    094|              obj.onmouseout = colorize(obj,
                        coloriA[no][i][j][0]);
    095|              obj.onclick = showColorInfos(
                        coloriA[no][i][j][0], coloriA[no][i][j][1],
                        window.event);
    096|            }
    097|          }
    [...]
    112|        return;
    113|      }
    [...]
    E dopo aver caricato la pagina mi da un errore:

    Riga: 93
    Carattere: 15
    Errore: Non implementato
    Codice: 0
    URL: ...

    Quindi l'errore è dato dalla riga 93: "obj.onmouseover = colorize(obj, '#00548C');" (ed alla successiva riga 94 e 95 se non venisse interrotta l'esecuzione dello script).

    Come mai riscontro questo errore?
    Come posso risolverlo?

    Grazie in anticipo...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La funzione colorize e` definita?

    Comunque non puoi passare parametri quando chiami la funzione con un evento definito cosi`.


    Ma dove l'hai pescato?
    Ho l'impressione che sia un linguaggio vecchiotto (come dire che nei prossimi browser potrebbe non funzionare)
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di hcka
    Registrato dal
    Oct 2002
    Messaggi
    435
    codice:
    069|      function colorize(oDiv, sColor) {
    070|        if (allIsOk)
    071|          oDiv.style.borderColor = sColor;
    072|        return;
    073|      }
    Come potrei fare altrimenti per gestire l'evento da js?

  4. #4
    Utente di HTML.it L'avatar di hcka
    Registrato dal
    Oct 2002
    Messaggi
    435
    Per quanto riguarda i parametri, la funzione colorize viene chiamata regolarmente: se subito dopo l'intestazione scrivo "alert(oDiv); alert(sColor);" mi da due alert giustamente con "[object]" e "#00548C"... Inoltre in questo caso l'errore mi viene dato dopo gli alert(), ma con le stesse specifiche (riga 94 anzichè 93 per via della riga con gli alert()).

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    A me risulta che puoi fare:

    obj.onmouseover = colorize;

    ma non puoi passare parametri.

    Chiaramente dovresti rivedere il tutto, ed usare funzioni diverse a seconda dei parametriche vuoi passare.
    Ad esempio:
    obj.onmouseover = colorizeverdone;

    dove:
    function colorizeverdone () {
    colorize(???, '#00548C');
    }
    (non so cosa mettere al posto di ???)

    Comunque il tuo modo di definire obj e` obsoleto:
    obj = eval("document.all.c" + i + "_" + j);

    sostituiscilo con:
    obj = document.getElementById("c" + i + "_" + j);
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it L'avatar di hcka
    Registrato dal
    Oct 2002
    Messaggi
    435
    Mi ingegnerò o cercherò qualcosa...
    Comunque intendevi che il mio codice è vecchiotto per il modo di riferirmi a obj? La funzione showColorTable completa è:
    codice:
    085|      function showColorTable(no) {
    086|        allIsOk = false;
    087|        if (document.all) {
    088|          for (i = 0; i < coloriA[no].length; i++) {
    089|            for (j = 0; j < coloriA[no][i].length; j++) {
    090|              obj = eval("document.all.c" + i + "_" + j);
    091|              obj.style.border = "2 solid " +
                        coloriA[no][i][j][0];
    092|              obj.style.background = coloriA[no][i][j][0];
    093|              obj.style.cursor = "hand";
    094|              obj.onmouseover = colorize(obj, '#00548C');
    095|              obj.onmouseout = colorize(obj,
                        coloriA[no][i][j][0]);
    096|              obj.onclick = showColorInfos(
                        coloriA[no][i][j][0], coloriA[no][i][j][1],
                        window.event);
    097|            }
    098|          }
    099|        } else if (document.getElementById) {
    100|          for (i = 0; i < coloriA[no].length; i++) {
    101|            for (j = 0; j < coloriA[no][i].length; j++) {
    102|              obj = document.getElementById("c" + i + "_" + j);
    103|              obj.style.border = "2 solid " +
                        coloriA[no][i][j][0];
    104|              obj.style.background = coloriA[no][i][j][0];
    105|              obj.style.cursor = "hand";
    106|              obj.onmouseover = colorize(obj, '#00548C');
    107|              obj.onmouseout = colorize(obj,
                        coloriA[no][i][j][0]);
    108|              obj.onclick = showColorInfos(
                        coloriA[no][i][j][0], coloriA[no][i][j][1],
                        window.event);
    109|            }
    110|          }
    111|        }
    112|        allIsOk = true;
    113|        return;
    114|      }
    Ma penso che toglierò la perte per il document.all...
    Grazie dell'aiuto...

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ok, oper lo meno scambia l'ordine, altrimenti utilizzi eval() anche se non e` necessario (con carico inutile del client):
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Utente di HTML.it L'avatar di hcka
    Registrato dal
    Oct 2002
    Messaggi
    435
    Grazie di tutto ho risolto così:
    codice:
    063|      function colorize() {
    064|        if (allIsOk)
    065|          if (this.borSta == 'out') {
    066|            this.style.borderColor = this.back;
    067|            this.borSta = 'over';
    068|          } else if (this.borSta == 'over') {
    069|            this.style.borderColor = this.colorHex;
    070|            this.borSta = 'out';
    071|          }
    072|        return;
    073|      }
    074|      function showColorInfos() {
    075|        if (allIsOk) {
    076|          hexC.value = this.colorHex;
    077|          rgbC.value = this.colorRgb;
    078|          cInfo.style.pixelTop = document.body.scrollTop +
                    window.event.clientY + 5;
    079|          cInfo.style.pixelLeft = window.event.clientX + 5;
    080|          cInfo.style.visibility = 'visible';
    081|        }
    082|        return;
    083|      }
    084|      function showColorTable(no) {
    085|        allIsOk = false;
    086|        for (i = 0; i < coloriA[no].length; i++) {
    087|          for (j = 0; j < coloriA[no][i].length; j++) {
    088|            obj = document.getElementById("c" + i + "_" + j);
    089|            obj.back = '#00548C';
    090|            obj.colorHex = coloriA[no][i][j][0];
    091|            obj.colorRgb = coloriA[no][i][j][1];
    092|            obj.borSta = 'out';
    093|            obj.style.border = "2 solid " + coloriA[no][i][j][0];
    094|            obj.style.background = coloriA[no][i][j][0];
    095|            obj.style.cursor = "hand";
    096|            obj.onmouseover = colorize;
    097|            obj.onmouseout = colorize;
    098|            obj.onclick = showColorInfos;
    099|          }
    100|        }
    101|        allIsOk = true;
    102|        return;
    103|      }
    Grazie di tutto e... ...alla prossima... ;P

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 © 2024 vBulletin Solutions, Inc. All rights reserved.