2016-05-26 113 views
1

以下一段JavaScript代碼並不符合我的預期。它是在ajax調用的成功執行的代碼,但是:儘管在$ .each value1.html_id的某些輪次中,重繪或重新加載是相等的(並且它們都是字符串),但if(){}代碼從未得到執行。我在這裏錯過了什麼?如果語句正確但未執行

的執行console.log()外的if語句被執行,我可以看到,值是相同的,但在{}的如果永遠不會被執行

success: function(result) { 
    activaTab(tab_id); 
    $.each(tables, function(key, value1) { 
     console.log(value1.html_id + redraw + reload) 
     if (value1.html_id == redraw) { 
      console.log('works'); 
      value1.table.columns.adjust().draw(); 
     } 
     if (value1.html_id == reload) { 
      console.log('works2'); 
      value1.table.ajax.reload(null, false); 
     } 
    }); 
} 

控制檯看起來碼這樣每次(即324 IFS線外)

scr_table2.js:324 scr-tablescr_tablescr_table1 
scr_table2.js:324 scr-table1scr_tablescr_table1 
scr_table2.js:324 scr-table2scr_tablescr_table1 
scr_table2.js:324 scr-table3scr_tablescr_table1 
+0

使用'console.log'時,應該這樣做:'console.log(value1.html_id,redraw,reload)'。這樣你就可以區分3個變量的每一個。 –

+5

貌似'-'和'_' - 'scr-table'和'scr_table'之間有混淆 –

+0

console.log後缺少分號? –

回答

5

我不知道這是否是一個錯字,但"scr-table"不等於"scr_table"

它們的區別 - 第一有-和第二的_

在JavaScript的平等比較值時,也應該使用===操作。它不會試圖強制類型,所以你才能真正比較平等。

+0

哇,盯着它一會兒,一個人甚至都不會再看到那些錯誤! – Niels

+0

@Niels請參閱我的編輯並考慮使用'==='運算符。我很高興能幫助你! ;-) – glcheetham

+0

這個===不同於PHP?在那裏,我認爲這意味着即使類型必須匹配 – Niels