Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    30

    firefox e creazione bottoni

    nuovo problema, la compatibilità con firefox del metodo createElement
    ho usato una cosa così in IE che non funziona in firefox:
    var button_del=document.createElement("<input type='button' onClick='removeProp(this.id)'>");
    button_del.id = num2;
    button_del.value="Delete";

    ho provato anche una cosa così ma niente:
    var button_del=document.createElement("input");
    button_del.type="button";
    button_del.id=num2;
    button_del.value="Delete";
    button_del.onClick=removeProp(this.id);

    ho provato anche direttamente document.createElement("button");

    il punto è che ho un altro bottone che richiama la creazione di una form che contiene sti bottoni, quando clicco questo bottone anzichè semplicemente aprire il pannello che ho creato con sti nuovi bottoni mi fa anche direttamente l'onclick dei bottoni che ho creato e succede un casino, ma se l'onclick e bottoni che creo non dovrebbe lanciarlo quando apro il pannello form con il bottone di apertura

    dove sbaglio?

  2. #2
    a parte la prima soluzione, che è
    e se IE riesce a interpretarla in una qualsiasi maniera allora proprio non ci siamo :berto:
    cmq nel secondo caso l'errore è proprio sull'impostazione della funzione, devi fare:
    codice:
    var button_del=document.createElement("input");
    button_del.type="button";
    button_del.id=num2;
    button_del.value="Delete";
    button_del.onclick= function () { removeProp(this.id);}
    «Non esiste mondo fuor dalle mura di Verona; ma solo purgatorio, tortura, inferno. Chi è bandito di qui, è bandito dal mondo e l'esilio dal mondo è morte...»
    - William Shakespeare -

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    30
    ovviamente la funzione l'avevo già dichiarata e definita sopra, li era solo un richiamo, per quello la funzione viene lanciata ma non al click del bottone giusto, viene lanciata quando faccio click sul bottone che genera i campi e i relativi bottoni usati per eliminarli uno alla volta, cmq ti ringrazio per l'aiuto e se riuscissi a spiegarmi perchè non va mi faresti un gran favore, grazie ciao

  4. #4
    ovviamente la funzione l'avevo già dichiarata e definita sopra, li era solo un richiamo, per quello la funzione viene lanciata ma non al click del bottone giusto, viene lanciata quando faccio click sul bottone che genera i campi e i relativi bottoni usati per eliminarli uno alla volta, cmq ti ringrazio per l'aiuto e se riuscissi a spiegarmi perchè non va mi faresti un gran favore, grazie ciao
    Mi permetti un riassunto, in modo da capire meglio il problema?
    - Allora tu hai la tua funzione removeProp() definita in un certo punto del codice. Questa funzione se richiamata correttamente funziona correttamente.
    - Il problema è che quando tu clicci sul pulsante che aggiunge dinamicamente un campo al form, la funzione removeProp() parte subito (quindi è come se fosse al click sul pulsante aggiungi e non al 'Delete')

    Ho detto bene?
    Il problema come ti avevo evidenziato precedentemente è dovuto al fatto che quando imposti la funzione sull'evento onclick del nuovo bottone che vuoi aggiungere, i realtà, per come hai definito l'associazione evento/funzione è un richiamo esplicito alla funzione, quindi la funzione viene eseguita nel momento della creazione del bottone.

    Per ovviare ciò, e far eseguire la funzione solamente al click sul pulsante 'Delete' devi modificare l'associazione evento/funzione in questo modo:
    codice:
    button_del.onclick= function () { removeProp(this.id);}
    in questa maniera la funzione removeProp() verrà eseguita sull'effettivo click sul pulsante 'Delete'.

    spero di aver centrato il problema e aver risposto in maniera esaustiva e soprattutto comprensibile. Se così nn fosse, chiedi pure. Magari dammi un link o mandami il codice della pagina, in modo che possa vederla in azione e comprendere meglio il problema.

    «Non esiste mondo fuor dalle mura di Verona; ma solo purgatorio, tortura, inferno. Chi è bandito di qui, è bandito dal mondo e l'esilio dal mondo è morte...»
    - William Shakespeare -

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    30
    hai capito bene e sei stato perfetto, grazie mille, non avevo afferratto la storia della function() ..., cmq il problema è proprio quello che hai detto tu, proverò così e penso proprio che vada benone
    grazie ancora e buona domenica

  6. #6
    figurati...se hai ancora problemi chiedi pure...
    ciao e buona domenica anche a te
    «Non esiste mondo fuor dalle mura di Verona; ma solo purgatorio, tortura, inferno. Chi è bandito di qui, è bandito dal mondo e l'esilio dal mondo è morte...»
    - William Shakespeare -

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    30
    ultimo aiutino, alla fine ho fatto una cosa così, con doppio codice per IE e FIREFOX, per IE tutto ok per FIREFOX ancora problemi:
    if (window.ActiveXObject)
    {
    figure.getProperty("pname"+jj);
    figure.getProperty("ptype"+jj);
    var input_name2 = document.createElement("input");
    var input_type2 = document.createElement("select");
    var button_del2 = document.createElement("<input type='button' onClick='removeProp(this.id)'>");
    input_name2.type="text";
    input_name2.id="pname"+jj;
    input_type2.id="ptype"+jj;
    input_name2.value=figure.getProperty("pname"+jj);
    for(var ov=0; ov<7; ov++)
    {
    var opt = document.createElement("option");
    opt.text = opt_vect[ov];
    if (figure.getProperty("ptype"+jj)==opt.text) opt.selected = true;
    input_type2.options.add(opt);
    }
    button_del2.id = jj;
    button_del2.value="Delete";
    document.getElementById("PropPanel").appendChild(i nput_name2);
    document.getElementById("PropPanel").appendChild(i nput_type2);
    document.getElementById("PropPanel").appendChild(b utton_del2);
    }
    else
    {
    figure.getProperty("pname"+jj);
    figure.getProperty("ptype"+jj);

    // L'ERRORE DOVREBBE ESSERE DA QUA IN GIU' (tralasciate la roba che non ha attinenza, l'errore dovrebbe essere sulla creazione e gestione degli elementi)

    var input_name2 = document.createElement("input");
    var input_type2 = document.createElement("select");
    var button_del2 = document.createElement("input");
    input_name2.type="text";
    input_name2.id="pname"+jj;
    input_type2.id="ptype"+jj;
    input_name2.value=figure.getProperty("pname"+jj);
    for(var ov=0; ov<7; ov++)
    {
    var opt = document.createElement("option");
    opt.text = opt_vect[ov];
    if (figure.getProperty("ptype"+jj)==opt.text) opt.selected = true;
    input_type2.options.add(opt);
    }
    button_del2.setAttribute("type","button");
    button_del2.setAttribute("id",jj);
    button_del2.setAttribute("value","Delete");
    button_del2.setAttribute("onClick","removeProp(thi s.id)");
    document.getElementById("PropPanel").appendChild(i nput_name2);
    document.getElementById("PropPanel").appendChild(i nput_type2);
    document.getElementById("PropPanel").appendChild(b utton_del2);
    }

  8. #8
    Il problema in questo caso è l'uso del metodo getProperty(), che Firefox non supporta nativamente.
    quindi devi sostituire quella funzione o al più crearla tu...
    «Non esiste mondo fuor dalle mura di Verona; ma solo purgatorio, tortura, inferno. Chi è bandito di qui, è bandito dal mondo e l'esilio dal mondo è morte...»
    - William Shakespeare -

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    30
    getProperty() è un metodo definito in un js di una libreria che sto usando, l'errore dovrebbe essere nella creazione e gestione degli elementi input e select, in altri pezzi di codice uso le funzioni della stessa libreria js e non ho problemi, devo forse usare new Option anzichè add per aggiungere opzioni alla select? altre cose che possono dare problemi?

  10. #10
    e come facevo io a saperlo?????
    visto che nn c'era scritto da nessuna parte, ho dato x scontato che fosse, quello...
    cmq, nn avendo la tua libreria, ho tolto le righe in cui compare la funzione getProperty(), sostituendola con una stringa e in Firefox la funzione funziona senza problemi... quindi non saprei.
    Hai un link per la pagina on-line? Hai FireBug installato? non dice nulla?
    «Non esiste mondo fuor dalle mura di Verona; ma solo purgatorio, tortura, inferno. Chi è bandito di qui, è bandito dal mondo e l'esilio dal mondo è morte...»
    - William Shakespeare -

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.