2016-04-22 6 views
0

Ich habe ein Problem mit Schleifen und Vergleiche mit JSONObj. Mein Code funktioniert, außer wenn das Element in JSONObj nicht existiert.Javascript für Schleife und strings übereinstimmen

Ich möchte 2 string JSONObj mit res vergleichen existiert mir nicht geben Sie eine Nachricht in myTextarea2 wie der Eingang BBB nicht

existiert Ich habe versucht Boolen var isNomatch = ((JSONObj[i] == res[b]))

if (isNomatch == false) Ich denke, diese ID ist falsch

oder

if((JSONObj[i] !== res[b])){

und meine for-Schleife ist ungerade

Html Kopf

<input type="text" id="myText" value="26B,26N,245"> 
<button onclick="myFunction()">ok</button> 
<br> 
<textarea id="myTextarea">Item</textarea > 
<br> 
<textarea id="myTextarea2"></textarea > 

Javascript

var JSONObj = [ 
    {"nummer":"26B", "item":"26B) Sonic Screwdriver\n\n"}, 
    {"nummer":"26N", "item":"26N) Pizza\n\n"}, 
    {"nummer":"245", "item":"245) I need Coffe\n\n"} 

] 

    function myFunction(){ 
     var str = document.getElementById("myText").value; 
     var res = str.split(","); 

     for(var b = 0; b < res.length; b++) { 

      for(var i = 0; i < JSONObj.length; i++) { 

       //Here is the problem 
       if((JSONObj[i] !== res[b])){ 
       var str2 = res[i]; 
       var text2 = [text2,str2].join(""); 
     document.getElementById("myTextarea2").value =text2; 
      } 

      //this one's OK 
      if (JSONObj[i].nummer === res[b]){ 

       var str1 = JSONObj[i].item; 
       var text1 = [text1,str1].join(""); 
     document.getElementById("myTextarea").value =text1; 
     document.getElementById("myTextarea").cols = "100"; 
     document.getElementById("myTextarea").rows = "20"; 
     } 
     } 
    } 
    } 

Antwort

0

Wie Sie bereits den Teil festgestellt haben, wo es ein Problem gibt

//Here is the problem 
     if((JSONObj[i] !== res[b])){ 
     var str2 = res[i]; 
     var text2 = [text2,str2].join(""); 

     } 

Sie versuchen, wenn ein Objekt zum Vergleich auf eine Zeichenfolge nicht gleich die immer true sein wird.

Ändern Sie die Syntax

if(JSONObj[i].nummer !== res[b]){ 

ich ein anderes Problem in Ihrem Code zu sehen. Dieser Teil

//this one's OK 
      if (JSONObj[i].nummer === res[b]){ 

       var str1 = JSONObj[i].item; 
       var text1 = [text1,str1].join(""); 
      } 

ist außerhalb der for-Schleife und wie können Sie den Indexwert von i zuzugreifen. Da Sie sagen, dass es funktioniert, ist entweder der Code, den Sie hier gepostet haben, nicht das, was Sie wirklich haben, oder Ihr Code funktioniert überhaupt nicht.

+0

Ich benutze NetBeans keinen Fehler. jsfiddle.net funktioniert nicht und jsbin außerhalb des Geltungsbereichs für text1 und text1. funktioniert komisch – Wilk

Verwandte Themen