2012-07-28 51 views
0

我浪费了4个小时的搜索和尝试,但没有运气。写作Javascript加入元素,遇到问题

if ((navigator.plugins) && (navigator.plugins.length)) { 
    for (var xx = 0, l = navigator.plugins.length; xx < l; xx++) {  
     var tn = navigator.plugins[xx].name;  
     if (tn.indexOf("Java") != -1) { 
      document.write("Found "); 
     } 
     else { 
      document.write("Nothing "); 
     }  
    } 
} 

Insteading只是 “发现” 或 “无” 这个脚本写入以下内容:

NothingNothingFoundNothing 

(有4个插件BTW):

我该如何解决这个问题,使我只收到一个答案?我不想用其他方法来查找是否安装了Java,只是上面的内容正在工作。

编辑: 谢谢你们,现在它工作。

+0

这是一个很好的用例['Array.prototype.some'(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some) – zzzzBov 2012-07-28 05:03:14

回答

1
if ((navigator.plugins) && (navigator.plugins.length)) { 
    var found = false; 
    for (var xx = 0, l = navigator.plugins.length; xx < l; xx++) { 

     var tn = navigator.plugins[xx].name; 

     if (tn.indexOf("Java(TM)") { 
      found = true; 
     } 

    } 
    if(found) { 
     document.write("Java "); 
    } else { 
     document.write("Nothing "); 
    } 
} 
0

您正在循环内打印'Java'和'Nothing',因此当它找到java时,它会打印java,当它找不到java时,它不打印任何内容。试试这个:

var javafound = false; 
if ((navigator.plugins) && (navigator.plugins.length)) { 
    for (var xx = 0, l = navigator.plugins.length; xx < l; xx++) { 
    var tn = navigator.plugins[xx].name; 

    if (tn.indexOf("Java(TM)") { 
     javafound = true; 
    } else { 
     javafound = false; 
    } 

    } 
} 

if (javafound) { 
    document.write("Java "); 
} else { 
    document.write("Nothing "); 
}