2016-07-31 14 views
0

Ich habe Javascript-Code, der Werte von einem Array abruft, das eine HTTP-Antwort von einem Server verarbeitet und Schaltflächen zu einem modalen Fenster hinzufügt. Die IDs für die Schaltflächen stammen also aus dem Array. Auf den zweiten Klick ist alles in Ordnung und meine Tasten werden dem modalen Fenster hinzugefügt. Aber wenn ich die Funktion beim nächsten Mal wieder aufrufe, sollten die Buttons nur noch aktualisiert werden. Wie kann ich damit umgehen, dass die Funktion die Schaltflächen nur beim zweiten und weiteren Klicken aktualisiert?Aktualisieren Sie nur die hinzugefügten JavaScript-Elemente beim zweiten Klick.

buttonContainer = document.getElementById('modal1');     
     for (i = 0; i < resultContainers.length; i++) { 
      newButton = document.createElement('input'); 
      newButton.type = 'button'; 
      newButton.value = resultContainers[i]; 
      newButton.id = resultContainerValues[i]; 
      newButton.class = 'buttonContainer'; 
       if (newButton.id == 'true') { 
        newButton.style.backgroundColor = '#8cff1a'; 
       }; 
      newButton.onclick = function() { 
       alert('You pressed '+this.id); 
      }; 
      buttonContainer.appendChild(newButton); 

Antwort

0

Sie müssen prüfen, ob die Schaltfläche bereits vorhanden ist, bevor Sie sie in diesem Fall hinzufügen. Da Sie die ID der Schaltfläche kennen, die Sie gerade erstellen, können Sie sehen, ob bereits eine Schaltfläche mit dieser ID vorhanden ist, und diese stattdessen aktualisieren.

var newButton = document.getElementById(resultContainerValues[i]); 
if(newButton!=null) { 
    newButton.value = resultContainers[i]; 
} else { 
    newButton = document.createElement('input'); 
    newButton.type = 'button'; 
    newButton.value = resultContainers[i]; 
    newButton.id = resultContainerValues[i]; 
    newButton.class = 'buttonContainer'; 
    if (newButton.id == 'true') { 
     newButton.style.backgroundColor = '#8cff1a'; 
    } 
    newButton.onclick = function() { 
     alert('You pressed '+this.id); 
    }; 
    buttonContainer.appendChild(newButton); 
} 
+0

Vielen Dank für Ihre Hilfe, aber wenn ich die Funktion ein zweites Mal lade, werden die Tasten wieder hinzugefügt. Was ich möchte, ist, dass nicht alle Knöpfe ein zweites Mal hinzugefügt werden, aber die Knöpfe sollten aktualisiert werden, dass jeder von ihnen nur einmal existiert. Gibt es eine Möglichkeit, dies auf einfache Weise zu tun? @ kamoroso94 – Tmyr

+0

Ich denke, ich kann auf einige der Details Ihres Problems unscharf sein. Ich habe ein JSFiddle-Beispiel gemacht, das zeigt, was ich hoffe, dass du es suchst. Wenn nicht, können Sie Ihre Frage vielleicht mit weiteren Details aktualisieren? https://jsfiddle.net/x5k57o01/ – kamoroso94

+0

Das sagt mir wirklich nicht mehr über das Problem, das Sie haben. Sie haben erwähnt, dass die Schaltflächen immer wieder dupliziert werden. Wann rufen Sie diesen Code auf und woher bekommen Sie die Werte für die Variablen 'resultContainers' und 'resultContainerValues'? – kamoroso94