2012-03-19 117 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");` 
}