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

    listAttribute is not a constructor;

    salve, ho questo codice:

    function listAttribute()
    {
    /*
    * Un insieme di righe del formato
    * <attributo>::<valore>
    */
    var rows = new Array();
    var i = 0;

    const div = "||";
    const eq = "::";

    function addRow(row)
    {
    if(row.indexOf(eq)>0)
    rows.push(row);
    else
    alert("Formato non valido.");
    };

    this.length = function()
    {
    return rows.length;
    };

    this.add = function(attr,value)
    {
    addRow(attr + eq + value);
    }

    this.remove = function(attr)
    {
    var tmpArray = new Array();
    for(i=0;i<rows.length;i++)
    {
    var cols = rows[i].split(eq);
    var attributo = cols[0];
    var valore = cols[1];
    if(attributo!=attr)
    {
    tmpArray.push(attributo + eq + valore);
    };
    }
    rows = tmpArray;
    };

    this.get = function(attr)
    {
    for(i=0;i<rows.length;i++)
    {
    var cols = rows[i].split(eq );
    var attributo = cols[0];
    var valore = cols[1];
    if(attributo==attr)
    {
    return valore;
    };
    }
    return null;
    };

    this.clear = function(){rows = new Array();};

    this.out = function()
    {
    var send = "";
    for(i=0;i<rows.length;i++)
    {
    var cols = rows[i];
    send += cols + "\n";
    }
    send = send.substring(0,send.length-1);
    return send;
    };

    this.toString = function()
    {
    return this.out();
    };

    this.parse = function(text)
    {
    var splitter = text.split("\n");
    rows = new Array();
    for(i=0;i<splitter.length;i++)
    {
    var cols = rows[i].split(eq);
    var attributo = cols[0];
    var valore = cols[1];
    rows.push(attributo + eq + valore);
    };
    };

    this.send = function()
    {
    var snd = "";
    for(i=0;i<rows.length;i++)
    {
    var cols = rows[i];
    snd += cols + "#";
    }
    snd = snd.substring(0,snd.length-1);
    return snd;
    };
    }

    var sender = new listAttribute();


    che richiamo con questa funzione

    function doSendProfilato()
    {
    var senders = new vector();
    var send="send=";
    if(document.form.numTipologie.value==1)
    {
    sender.clear();
    sender.add("ID",document.form.codColonna.value);
    sender.add("numColonne",document.form.numColonna.v alue);
    sender.add("altColonna",document.form.altColonna.v alue);
    sender.add("supplNum",document.form.numSupplementi .value);
    sender.add("supplImb",document.form.imbSupplementi .value);
    sender.add("codMensola",document.form.codMensola.v alue);
    sender.add("numMensola",document.form.numMensola.v alue);
    sender.add("altMensola",document.form.altMensola.v alue);
    senders.add(sender);
    }
    else
    {
    senders.clear();
    var index = Number(document.form.numTipologie.value);
    for(var i=0;i<index;i++)
    {
    var attr = new listAttribute();
    attr.add("ID",document.form.codColonna[i].value);
    attr.add("numColonne",document.form.numColonna[i].value);
    attr.add("altColonna",document.form.altColonna[i].value);
    attr.add("supplNum",document.form.numSupplementi[i].value);
    attr.add("supplImb",document.form.imbSupplementi[i].value);
    attr.add("codMensola",document.form.codMensola[i].value);
    attr.add("numMensola",document.form.numMensola[i].value);
    attr.add("altMensola",document.form.altMensola[i].value);
    senders.add(attr);
    }
    }
    send += senders.out();
    return send;
    }

    tramite un bottone.

    se premo la prima volta il pulsante va tutto bene, se premo la seconda volta mi dà l'errore "listAttribute is not a constructor"

    come lo risolvo questo problema?
    grazie mille. saluti, Massimiliano.

  2. #2
    mi rispondo da solo. il problema era in una inizializzazione sbagliata della variabile che era messa in un altro file js e che non mi è venuto in mente di controllare.
    adesso sembra funzionare.
    comunque, per curiosità. è questo il modo corretto di creare una classe in javascript? o c'è un modo migliore?
    grazie mille!
    saluti, Massimiliano

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.