2016-04-22 135 views
0

我有一個循環和與JSONObj比較的問題。我的代碼工作,除非該項目不存在於JSONObj中。javascript for循環和匹配字符串

我想比較2串JSONObj資源不存在給我喜歡的輸入myTextarea2消息BBB不存在

我試圖boolen var isNomatch = ((JSONObj[i] == res[b]))

if (isNomatch == false)我想這個問題是錯誤的

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

和我的for循環是奇數

HTML報頭

<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"; 
     } 
     } 
    } 
    } 

回答

0

正如你已經注意到這裏有一個問題

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

     } 

您試圖比較對象是否不等於字符串這將始終是true

語法更改爲

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

我看到你的代碼中的另一個問題。這部分

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

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

在for循環之外,您如何訪問索引值i。既然你是在說它的工作,那麼你在這裏發佈的代碼不是你真正擁有的或者你的代碼根本無法工作。

+0

我使用netBeans沒有錯誤。 jsfiddle.net不工作,jsbin超出了text1和text1的範圍。奇怪的作品 – Wilk