Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    22

    "eliminare" l'evento onclick

    Salve, premetto che di programmazione java non conosco nulla e non so se scrivo sul forum giusto.

    Ho un codice scritto sia in java che in php e che funziona bene ma di cui ho la necessita di fare una modifica.
    All'interno del codice ho la seguente funzione:
    ---------------

    item.onclick = new Function("addItem(\""+iid+"\",\""+iname+"\",\""+it ax+"\",\""+ibprice+"\",\""+iuprice+"\",\""+iprice+ "\");");
    --------------------
    che richiama una funzione chiamata "addItems" (dichiarata sempre al''interno della stesso file) alla pressione di un pulsante
    (evento onclick).

    La domanda è: ho la necessita di attivare la funzione additems a prescindere dal click sul pulsante ovvero deve attivarsi
    nel momento in cui, la sequenza di elaborazione del codice si trova in quel punto, e non sulla base di altri eventi (in questo caso dal click su elemento.
    In pratica vorrei "eliminare" l'evento onclick.
    grazie in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Quello non è Java... è JavaScript.

    Sono due cose diverse, e JavaScript ha il suo forum.

    Sposto.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    codice:
    (new Function("addItem(\""+iid+"\",\""+iname+"\",\""+itax+"\",\""+ibprice+"\",\""+iuprice+"\",\""+iprice+"\");"))();

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    22

    risolto

    Grazie 1000! a carlomarx, funziona alla grande.

    saluti

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    22

    funzione dupplicata

    Grazie di nuovo a carlomarx e, anche se ho scritto risolto, vorrei porre altra domanda:

    la funzione modificata grazie ai consigli di carlomarx, appartiene al seguente codice (funzione):


    function getItems() {

    if (req.readyState == 4) {
    // only if "OK"
    if (req.status == 200) {
    document.getElementById('fe_items').innerHTML="";
    var response = req.responseXML;
    //Get the xml root
    var root = response.getElementsByTagName("items")[0];
    var items = root.getElementsByTagName("item");
    for(i=0;i<items.length;i++){
    var iid = items[i].getElementsByTagName("id")[0].firstChild.nodeValue;
    var iname = items[i].getElementsByTagName("name")[0].firstChild.nodeValue;
    var iimg = items[i].getElementsByTagName("image")[0].firstChild.nodeValue;
    var itax = items[i].getElementsByTagName("tax")[0].firstChild.nodeValue;
    var ibprice = items[i].getElementsByTagName("buyprice")[0].firstChild.nodeValue;
    var iuprice = items[i].getElementsByTagName("unitprice")[0].firstChild.nodeValue;
    var iprice = items[i].getElementsByTagName("price")[0].firstChild.nodeValue;
    var item = document.createElement("table");
    item.className = "tabitem";

    // vecchia funzione
    item.onclick = new Function("addItem(\""+iid+"\",\""+iname+"\",\""+it ax+"\",\""+ibprice+"\",\""+iuprice+"\",\""+iprice+ "\");");

    // funzione modificata qui non attiva
    // (new Function("addItem(\""+iid+"\",\""+iname+"\",\""+it ax+"\",\""+ibprice+"\",\""+iuprice+"\",\""+iprice+ "\");"))();

    var tbitem = document.createElement("tbody");
    item.appendChild(tbitem);
    var row1 = document.createElement("tr");
    var row2 = document.createElement("tr");
    tbitem.appendChild(row1);
    tbitem.appendChild(row2);
    var cell1 = document.createElement("td");
    var cell2 = document.createElement("td");
    row1.appendChild(cell1);
    row2.appendChild(cell2);
    im1 = document.createElement("img");
    im1.setAttribute("src",iimg);
    cell1.appendChild(im1);
    cell2.innerHTML = iname;
    document.getElementById('fe_items').appendChild(it em);
    }

    } else {
    alert("There was a problem retrieving the XML data:\n" + req.statusText);
    }
    }
    }


    dovendo avere entrambe le funzioni a disposizione (con onclick e senza) ho pensato di dupplicare il codice cambiando nome alla funzione, ottenendo:

    function getItems1() {
    ...............

    // item.onclick = new Function("addItem(\""+iid+"\",\""+iname+"\",\""+it ax+"\",\""+ibprice+"\",\""+iuprice+"\",\""+iprice+ "\");");


    (new Function("addItem(\""+iid+"\",\""+iname+"\",\""+it ax+"\",\""+ibprice+"\",\""+iuprice+"\",\""+iprice+ "\");"))();
    .............

    e tramite condizione posta sulla pagina richiedente le due funzioni ne richiamo una o l'altra a seconda della condizione di partenza.

    entrambe le funzione richiamano a loro volta la funzione chiamata addItem, che riporto qui:

    function addItem(id,iitem,tax,bprice,uprice,price){
    sit = document.getElementById('tbl_sitems');
    sittb = sit.getElementsByTagName('tbody')[0];
    row = document.createElement("tr");
    row.onclick = new Function("selectRow(document.getElementById('tbl_s items'),this.rowIndex);");
    sittb.appendChild(row);
    cell1 = document.createElement("td");
    row.appendChild(cell1);
    cell2 = document.createElement("td");
    row.appendChild(cell2);
    cell3 = document.createElement("td");
    row.appendChild(cell3);
    cell4 = document.createElement("td");
    row.appendChild(cell4);
    cell1.className="tvalue";
    cell2.className="tvalue";
    cell2.setAttribute("align","right");
    cell3.className="tvalue";
    cell3.setAttribute("align","right");
    cell4.className="tvalue";
    cell4.setAttribute("align","right");
    cell1.innerHTML='<input type="hidden" name="items[]" value="'+id+'"><input type="hidden" name="items_name[]" value="'+iitem+'">'+iitem;
    cell2.innerHTML='<input type="text" class="inp2" name="itemsqty[]" size="6" onchange="calcS()">';
    cell3.innerHTML='<input type="hidden" name="itemstax[]" value="'+tax+'"><input type="hidden" name="itemstotaltax[]" value="0">'+tax;
    cell4.innerHTML='<input type="hidden" name="itemsbprice[]" value="'+bprice+'"><input type="hidden" name="itemsuprice[]" value="'+uprice+'"><input type="hidden" name="itemsprice[]" value="'+price+'"><input type="hidden" name="itemstotalprice[]" value="0">'+price;
    selectRow(document.getElementById('tbl_sitems'),ro w.rowIndex);
    }

    che genera, su altro div, una lista "dinamica" con gli articoli che via via vengono selezionati con il click su categorie e quindi su articolo di interesse.

    il problema è che, mentre se richiamo la funzione getItems, tutto va bene, nel senso che la "lista" prodotta via via (ad ogni click) aumenta, quando vado ad aggiungere un prodotto tramite la funzione getItems1, mi aggiunge si il prodotto, ma prima mi azzera la lista.
    Se, a lista vuota, attivo la funzione getItems1 mi ritrovo, senza cliccare, il prodotto in lista e se procedo poi, tramite click su categorie/prodotti (ovvero attivo la funzione getItems) i prodotti si aggiungono via via alla lista e quindi tutto ok.
    Se (mi ripeto), a questo punto della lista, aggiungo un prodotto per mezzo della getItems1, la lista mi si azzera ma comunque l'articolo viene aggiunto, ovvero mi ritrovo con una lista composta da un solo articolo (diciamo l'ultimo selezionato).

    Quale delle funzioni (o parte di codice di esse) "azzera" la lista ? oppure succede solo per il fatto di "invocarle" in maniera alternata ?


    ringrazio in anticipo
    saluti

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.