2012-03-19 241 views
1

這是JavaScript的功能。請解釋如何比較Javascript中的兩個字符串。Javascript如何比較兩個字符串

<head> 
    <script type="text/javascript"> 
/*javascript function*/ 
    function ajax(str) 
    { 
    if (str.length==0) 
     { 
     document.getElementById("res").innerHTML="";  
     return; 
     } 
     if(str=="Select City") 
     { 
     alert("Please Select a City"); 
     } 
    document.getElementById("res").innerHTML==""; 
    var url="code1.php?q="+str+"&r"+Math.random(); 
    var obj; 
    try{ 
    obj=new ActiveXObject(Microsoft.XMLHTTP); 
    } 
    catch(e) 
    { 
     try 
     { 
     obj=new XMLHttpRequest(); 
     } 
     catch(e) 
     { 
     alert("Your browser not suport ajax"); 
     } 
    } 
    obj.open('Get',url,true); 
    obj.send(null); 
    obj.onreadystatechange=function() 
    { 
    if(obj.readyState==4) 
    { 
    document.getElementById("res").innerHTML=obj.responseText; 
    } 
    } 
    } 
    </script> 
    </head> 

    <body> 

    <select onchange="ajax(this.value)" name="sel" id="btn"><option>Dharmashala</option><option>Manali</option><option>Shimla</option></select> 
    <div id="res"></div> 
    </body> 
    </html> 

但它不工作,請建議我一個正確的方法來做到這一點。

+0

是否拋出錯誤,給出不正確的結果,等等?你能說比「它不工作」嗎? – 2012-03-19 14:45:44

+0

什麼不行?嘗試使用Firebug或瀏覽器的內置調試器之一來檢查您的代碼。 – 2012-03-19 14:46:38

+0

沒有錯誤它顯示我很困惑,這是比較正確的方式嗎? – ak274 2012-03-19 14:48:51

回答

0

我很確定它不工作,因爲你的this上下文不正確。 this.value正試圖調用您的select元素的value而不是所選的option。試試這個:

window.addEventListener('load', function(){ 
    var select = document.getElementById('btn'); 
    var selected = select.options[select.selectedIndex].value; 
}, false); 
window.addEventListener('change', function(selected) { changeHandler(selected); }, false); 

function changeHandler(selected) { 
    // run your ajax() function 
} 

此外,一定要放在一個value上每個option元素。

1

如何在JavaScript中比較字符串?使用==運算符進行等效處理,並使用>/<進行字母區別。

在您的代碼,此行似乎是一個有點用處:

document.getElementById("res").innerHTML==""; 

這裏難道你不想要一個分配(=)?

3

===用於字符串比較

if(str === "Select City") { 
    alert("Please Select a City");` 
}