Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    Problema con elementi.setAttribute()

    Salve sono nuovo del forum ed anche della programmazione HTML è JavaScript , ma non per questo non so fare niente di tutto ciò. Vengo al dunque ho un apparecchio elettronico (PLC) con web server integrato chee tramite pagine HTML è file script riesco a gestire le sue variabili sia in scrittura sua in lettura e fino qui neanche un problema. Ora stavo cercando di creare degli input in modo dinamico con (documenti.createElement() e di conseguenza settare i vari attributi con elementi.setAttribute() ,e qui riscontro un problema. Per leggere e scrivere le variabili di questo PLC creo un < form method="post" >con input e button(submit), dove come attributi valute del input imposto un testo che mi viene fornito dalla casa produttrice del PLC che eil seguente (':="nome_variabile 1"::="nome_blocco_di _memoria".nome_variabile 1:') e ripeto fin qui tutto funziona. Volevo quindi creare un input dentro un form in modo dinamico e inserisco tutto il codice è tutto funziona tranne che per il tag input sembra non accetterebbe questo elemento.setAttribute("value",':="nome_variabile '+ indice+'::="nome_blocco_di _memoria".nome_variabile' + indice +" :" '), quindi sostituisco la stringa con una combinazione di stringhe e variabili. Spero di essere stato chiaro .Sto affermando che fin quando scrivo una stringa come valore di value tutto funziona ma al momento che inserisco stringhe più concatenazione di variabili non funziona . Dopo tante prove ho capito che il segno più crea problemi. Ho anche usato il metodo String e toString e niente

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,675
    Ciao e benvenuto.
    L'operatore + (concatenazione stringe) non ha alcun problema ad essere usato per popolare il value di un elemento input.

    Da quello che hai indicato vedo però che questa espressione ha qualche errore:
    codice:
    ':="nome_variabile '+ indice+'::="nome_blocco_di _memoria".nome_variabile' + indice +" :" '
    Confrontandola con la stringa che hai riportato come esempio:
    codice:
    ':="nome_variabile 1"::="nome_blocco_di _memoria".nome_variabile 1:'
    dopo indice dovrebbe esserci un doppio apice. Inoltre mancherebbe uno spazio prima dell'ultimo indice (mentre tu ne hai messo uno dopo) e, per concludere, alla fine dell'espressione sembra ci sia un po' di confusione tra l'uso di apici e doppi apici; risulta esserci comunque un apice in più alla fine dell'espressione, che romperebbe la sintassi e andrebbe ad interrompe l'esecuzione dello script.

    Rispetto alla stringa d'esempio (fermo restando che tu l'abbia riportata in modo corretto), questa dovrebbe essere impostata in un modo del genere:
    codice:
    ':="nome_variabile '+ indice +'"::="nome_blocco_di _memoria".nome_variabile '+ indice +':'
    Chiaramente capisco che può essere un problema relativo alla poca esperienza, per cui non è così semplice per un neofita accorgersi di errori del genere. Posso giusto consigliarti di prestare maggiore attenzione durante la stesura dello script e di utilizzare eventualmente anche la console del tuo browser (premi F12 per aprirla) così da verificare facilmente se ci sono errori di sintassi e, nel caso, usare sullo script la funzione console.log() per poter monitorare il risultato di variabili e stringe di testo durante l'esecuzione dello script. In tal modo puoi facilmente verificare se ci sono errori di sintassi e/o se i valori restituiti non sono quelli aspettati.

    Buon proseguimento e buona permanenza sul forum.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Grazie per avermi risposto .Ti assicuro che ho sbagliato a scriverlo nel messaggio nel codice è scritto correttamente , infatti ho scritto nel messaggio di aver fatto diverse prove ed ho usato anche ispezione con crome(F12). Un altra prova è stata quella di aprire la pagina non dal web server ma in locale e riscontrando che sia dentro l'input che funziona sia dentro l'input che creo dinamicamente è presente la stessa stringa. Poi quando carico la pagina nel web tutto cambia in nell'input semplice compare un valore mentre in quello creato dinamicamente non c'è niente . Un altra cosa prova che ho fatto è stata di inserire in setAttribute("value","stringa 1"+"stringa 2") inp.setAttribute("value", ':="SET STEP ' + "1" + '"::="variabili".SET STEP ' + "1" + ':'); questo non funziona lo stesso quindi è come se il carattere + crei qualche problema. Aspetto risposte.Grazie in anticipo
    Ultima modifica di marco moffa; 31-03-2018 a 17:21

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,675
    Grazie per avermi risposto
    Figurati

    Ti assicuro che ho sbagliato a scriverlo nel messaggio nel codice è scritto correttamente, infatti ho scritto nel messaggio di aver fatto diverse prove ed ho usato anche ispezione con crome(F12)
    Bene, mi fa piacere che tu conosca la console web ma, come per la programmazione, il consiglio è comunque lo stesso, quello di essere più accurato e fare maggiore attenzione anche nel riportare le indicazioni sul forum, soprattutto quando si tratta di discussioni tecniche e, nello specifico, di parti di codice; altrimenti capisci bene che si rischia di creare solo confusione con la conseguenza che viene difficile, per gli altri, offrirti aiuto e, per te, riceverne.

    Ora, ti prego, riprendi fiato e con calma cerca di rielaborare, in italiano corretto (senza offesa), ciò che hai scritto qui, perché io non ho capito nulla di ciò che hai indicato:
    Un altra prova è stata quella di aprire la pagina non dal web server ma in locale e riscontrando che sia dentro l'input che funziona sia dentro l'input che creo dinamicamente è presente la stessa stringa. Poi quando carico la pagina nel web tutto cambia in nell'input semplice compare un valore mentre in quello creato dinamicamente non c'è niente . Un altra cosa prova che ho fatto è stata di inserire in setAttribute("value","stringa 1"+"stringa 2") inp.setAttribute("value", ':="SET STEP ' + "1" + '"::="variabili".SET STEP ' + "1" + ':'); questo non funziona lo stesso quindi è come se il carattere + crei qualche problema. Aspetto risposte.Grazie in anticipo
    Ripeto, se devi riportare parti di codice fai attenzione a riportare esattamente ciò che stai adoperando tu e utilizza cortesemente i tag [ CODE ] [ /CODE ] (vedi il regolamento di sezione tra le discussioni in evidenza) per ottenere una corretta formattazione sul forum e rendere il tutto più leggibile.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Si scusa è che devo dire tante cose e non mi riesce bene ad esprimermi nel modo giusto . O almeno spero. Riparto da capo, se creo un input con HTML in questo modo inp.setAttribute("value", ':="SET STEP ' + "indice" + '"::="variabili".SET STEP ' + "indice" + ':') non funziona se lo creo in questo modo inp.setAttribute("value", ':="SET STEP ' + "1" + '"::="variabili".SET STEP ' + "1" + ':') non funziona lo stesso ,se lo creo in questo modo inp.setAttribute("value", ':="SET STEP 1"::="variabili".STEP 1:') così funziona. La prova che ti dicevo prima consisteva nel fatto che aprendo la pagina HTML dalla cartella del PC quindi non dal web server la stringa che risulta nell'input è la stessa questo mi fa capire che non commetto sbagli nel concatenare le stringhe . Quando invece apro la pagina dal web server quindi con i valori del dispositivo un i due input hanno valori diversi e cioè quello con la stringa funziona e rileva il valore del dispositivo nell'altro input invece non c'è nessun valore cerco se riesco di allegare qualcosa

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,675
    Perdonami ma continuo a vedere dei pasticci nei codici che stai riportando qui sul forum, per cui non capisco se si tratta di errori di trascrizione o se effettivamente stai usando quei codici.

    Hai indicato le 3 situazioni che riporto qui con i tag [ CODE ] così è più semplice capire.

    1 (dici che non funziona):
    codice:
    inp.setAttribute("value", ':="SET STEP ' + "indice" + '"::="variabili".SET STEP ' + "indice" + ':')
    ---
    2 (dici che non funziona):
    codice:
    inp.setAttribute("value", ':="SET STEP ' + "1" + '"::="variabili".SET STEP ' + "1" + ':')
    ---
    3 (dici che funziona):
    codice:
    inp.setAttribute("value", ':="SET STEP 1"::="variabili".STEP 1:')
    ---
    Nel codice 1 hai indicato "indice" come una stringa di teso (cioè tra doppi apici) ma presumo volessi inserirlo come variabile (cioè senza doppi apici). Mi chiedo quindi se si tratta di un errore di trascrizione (di come lo hai riportato sul forum) o se effettivamente è un errore nel tuo codice; o, ancora, se deve essere scritto proprio in quel modo.

    Nel codice 2 hai usato "1" concatenandolo correttamente col resto delle stringhe. La stringa in uscita quindi è corretta ma dici che non funziona.

    Nel codice 3 hai indicato l'intera stringa e dici che così funziona. Ma da quel che vedo, la stringa in uscita del codice 2 e quella indicata nel 3 sono differenti.

    Esattamente il risultato è questo:
    2:
    codice:
    :="SET STEP 1"::="variabili".SET STEP 1:
    3:
    codice:
    :="SET STEP 1"::="variabili".STEP 1:
    Nota che nel 3 manca un SET. Io non ho idea se questo sia rilevante nell'interfacciamento col PLC (questo lo sai tu) ma ovviamente non puoi pensare di comparare i risultati ottenuti dai due codici, perché stai usando letteralmente delle stringhe differenti.

    Quindi mi chiedo: è un altro errore di trascrizione? è un errore del tuo codice? è irrilevante?

    vedi un po' tu.

    Se hai la pagina pubblica, sarebbe magari utile che tu ne postassi il link così da consentire l'eventuale verifica del problema anche a chi volesse aiutarti.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Scusa di nuovo e abbi pazienza e che sto scrivendo tutto cio con un po di fretta ,mi dispiace confonderti.
    Comunque nonostante ciò hai capito tutto. Il primo esempio indice non e' una stringa ma una variabile e nel terzo esempio ho omesso per sbaglio STEP ,ma nel codice ci sta. Mi indichi come pubblicare la pagina ? Di nuovo grazie .E auguri per la Pasqua

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,675
    No problem, ma si sa, la fretta è cattiva consigliera, di certo non aiuta.

    Lascia stare la pubblicazione, pensavo avessi già una pagina online dal momento che hai parlato di web server.

    Ad ogni modo se il codice non ha errori, quella stringa, che sia un unico testo o che sia creata in modo concatenato usando dei +, dovrebbe andare. Presumo il problema sia da cercare altrove.

    Prova a postare esattamente il codice che stai usando... che sia esattamente lo stesso però, altrimenti ogni volta bisogna capire se ci sono errori di trascrizione o meno; magari fai un copia-incolla.



    Buona domenica e buone festività Pasquali anche a te.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    Questa è la pagina. Ti ho scritto dove funziona e dove no. Puoi notare che se apri la pagina negli input compare la stessa stringa ma quando la carico nel web server del PLC funziona solo uno


    codice:
    <!DOCTYPE html >
    
    
    <!-- AWP_In_Variable Name='"variabili_DB".N DI STEP' -->
    
    
    
    
    <html lang="it" id="dd" >
    <head >
        <meta charset="utf-8" />
        
        <meta http-equiv="refresh" content="25"> 
        
        <title>
    
    
            PAGINA 2
        </title>
        <link href="CSS.css" rel="stylesheet" type="text/css">
        <script type="text/javascript" src="file.js"></script>
    
    
        
    
    
    
    
    </head>
    <body >
        
        <header id="vv">
            <div style="border:double">
            <!--<a href="INDEX.html">HOME</a>-->
            <a href="CLIMA.html">CLIMA</a>
                </div>
        </header><br /><br />
        <!--<div style="border:double;height:auto;width:300px" id="div">
    
    
        </div><br />-->
      
        
      <form>
          <input id="Submit1" type="submit" value="submit" hidden/>
          SET STEP 0:<input type="text" id="SET STEP 0" value=':="SET STEP 0"::="variabili".SET STEP 0:' name='"variabili".SET STEP 0'/>questo funziona
      </form>
       
                
         
       
       
        <input id="Text1" type="text" hidden/>
        <script type="text/javascript">
          // var n_di_step = document.getElementById("N DI STEP").value;
           
           commenti();
           function commenti() {
               var prima = document.getElementById("dd");
               for (a = 0; a < 5; a++) {
                   var comme = document.createComment(" AWP_In_Variable Name=" + "\'\"variabili\"." + "SET STEP " + a + "\'");
    
    
                   //document.body.appendChild(comme);
                   document.insertBefore(comme, prima);
               }
    
    
           }
            
           var pp = document.getElementById("SET STEP 0").value;
           var dd = ':="SET STEP 0"::="variabili".SET STEP 0:';
    
    
               var div = document.createElement("div");
               div.setAttribute("style", "border:double;height:auto;width:900px;float:left");
               div.setAttribute("id","div");
               var titolo = document.createElement("h4")
               var testo = document.createTextNode("VENTILAZIONE");
               titolo.setAttribute("style", "text-aling:center");
               titolo.appendChild(testo);
               div.appendChild(titolo);
           var gg = document.getElementById("vv");
    
    
               for (q = 0; q < 5; q++) {
                   
                  
                   var form = document.createElement("form");
                   var h4 = document.createElement("h4");
                   var h4_nome = document.createTextNode("SET STEP " + q + ":"+"(questo non funziona)")
                   var a_capo = document.createElement("br");
    
    
                   var submit = document.createElement("input");
                   submit.setAttribute("type", "submit");
                   submit.setAttribute("class", "bottone");
                   var submi_nome = document.createTextNode("SALVA");
                   submit.appendChild(submi_nome);
    
    
                   var input = document.createElement("input");
                   var qq = new String(q);
                   var input_nome = "\"variabili\".SET STEP " + q;
                   var input_value = ':="SET STEP ' +qq + '"::="variabili".SET STEP ' + qq + ':';
                  
                   input.setAttribute("type", "text");
                   input.setAttribute("id", "SET STEP " + q);
                   input.setAttribute("style", "float:right");
    
    
                   
                   input.setAttribute('name', input_nome);
                   input.setAttribute("value", input_value);
                   
                  
                   h4.appendChild(h4_nome);
                   h4.appendChild(submit);
                   h4.appendChild(input);
                   h4.appendChild(a_capo);
                   form.appendChild(h4);
                   div.appendChild(form);
                  
               };
               //document.getElementById("Text1").value = input_value;
               //document.body.appendChild(div);
               gg.appendChild(div);
              
    
    
           
      crea();
    function crea(){
    var val=':="SET STEP ' + "0" + '"::="variabili".SET STEP ' + "0" + ':'
    var pos=document.getElementById("Button1");
    var inputt=document.createElement("input");
    var testo = document.createTextNode("questo non funziona");
    //inputt.appendChild(testo);
    inputt.setAttribute("type","text");
    inputt.setAttribute("value",val);
    document.body.appendChild(inputt);
    document.body.appendChild(testo);
    };
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
        </script>
    
    
    
    
    </body>
    </html>

  10. #10
    Questa è la pagina. Ti ho scritto dove funziona e dove no. Puoi notare che se apri la pagina negli input compare la stessa stringa ma quando la carico nel web server del PLC funziona solo uno
    codice:
                                 PAGINA 2                                                CLIMA            
        
    
                            SET STEP 0:questo funziona

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.