2012-05-30 57 views
0

我使用這個功能:丟失的圓括號錯誤在JavaScript

function sel_test(e) { 
    //alert(e.length-1); 

    var splitdata = e.split("d"); 
    var newstr = e.substring(0,e.length-1); 

    dropcall = 1; 
    nodes = newstr.split(';'); 
    o = 0; 
    if (nodes[0] == '1') o = nodes.shift(); 
    for (i=0;i<nodes.length;i++) { 
    e = nodes[i]; 
    var ul = document.getElementById(e); 
    if (icons) var img = document.getElementById(e+'i'); 
    if (ul) { 
     if (((ul == 'none') AND (ul.style.display == 'none')) OR (ul.style.display == '')) { 
     ul.style.display = 'block'; 
     } else if (!o) { 
     ul.style.display = 'none'; 
     } 
    } 
    } 

JavaScript是給我缺少括號的錯誤:

if (((ul == 'none') AND (ul.style.display == 'none')) OR (ul.style.display == '')) {

這是什麼這樣做的正確方法。

+0

如果您沒有從「AND」和「OR」得到語法錯誤,那麼您必須擁有與我不同的JavaScript版本。 –

+0

是AND和OR無效標識符? –

+0

@ zhujy_8833:它們是有效的標識符,但是無效的運算符,所以即使它們被定義爲可以解析的標識符,JS也會尋找分號來分隔這些語句。 – 2012-05-30 00:15:27

回答

4

您應該使用& &和||而不是AND和OR。

不是嗎?

+0

如果我使用&& perl發出錯誤,在perl文件中添加 – jbcedge

+3

我以爲你說過這是javascript? –

+0

可以請你發佈你的答案,而不是提出問題嗎? –

3

試試這個:

if (((ul == 'none') && (ul.style.display == 'none')) || (ul.style.display == '')) 

JavaScript有一個與運營商,但它不是字AND,它是&&(也&,爲按位和)。同樣,而不是OR你想||(或|按位)。

請注意,您ul變量將永遠等於字符串'none' - 從document.getElementById(e)回報永遠是要麼匹配的DOM元素,或者null如果沒有元素具有提供的ID。

延伸閱讀:Logical Operators(和你應該讀它,因爲&&||並不總是返回truefalse和MDN解釋這一點)。

0

你也錯過了關閉功能右彎曲。

+0

另外,eclipse告訴我splitdata和img永遠不會被讀取,而且我沒有明確聲明。 –

+0

忘記splitdata,不使用IAM是 – jbcedge

+1

遺忘 - 它就像我從來沒見過 –