2013-02-06 148 views
0

我已經一些JavaScript它正在輸入從URL,如...JavaScript錯誤document.myform.mydiv未定義

www.mydomain.com/?dropdown=Alpha 

這就將預先選擇阿爾法從下拉框中位於myForm會 - > mydiv

function show(choice) { 

    var success = -1; 
    for (var i=0; i < document.myform.mydiv.length; i++) { 
    if (document.myform.mydiv.options[i].text == choice) 
     success = [i]; 
    } 
    document.myform.mydiv.selectedIndex=success; 
} 
var choice = (location.href.split("?")[1] || '').split("=")[1]; 

一切正常,除了如果您訪問的網址不帶擴展,使www.mydomain.com - 然後,它引發以下錯誤......

document.myform.mydiv is undefined 

下拉HTML是...

<form name="myform"> 
    <select name="mydiv"> 
    <option value="1">Alpha</option> 
    <option value="2">Beta</option> 
    <option value="3">Gamma</option> 
    <option value="4">Delta</option> 
    </select> 
</form> 

<script> 
    show(choice); 
    </script> 

這是非常自我解釋,我明白,這是因爲它是不確定的,我的問題是我怎麼添加一個檢查來解決?

+1

請加上您的標記。 – Mathletics

+0

你的意思是if(document.myform.myDiv){}'? – Mathletics

+1

你的選擇的名字是mydiv? – epascarello

回答

1

我認爲表單標籤要素實現之前調用您的Java腳本函數...所以只出現這個錯誤...

嘗試呼叫從表單元素活動中的任何一個功能。 ..然後,它會工作...

就像下面...

<html> 
<head> 
<script> 
var urlpath = "www.mydomain.com/?dropdown=Alpha" 
var choice = (urlpath.split("?")[1] || '').split("=")[1]; 
function show() 
{ 
var success = -1; 
    for (var i=0; i < document.myform.mydiv.length; i++) { 
    if (document.myform.mydiv.options[i].text== choice) 
     success = i; 
    } 
    document.myform.mydiv.selectedIndex=success; 
} 
</script> 
</head> 
<body> 
<form name="myform"> 
    <select name="mydiv" onchange="show();"> 

    <option value="2">Beta</option> 
    <option value="3">Gamma</option> 
    <option value="4">Delta</option> 
    <option value="1">Alpha</option> 
    </select> 
</form> 
</body> 
</html> 
+0

完美,我幾乎在那裏!現在只有問題是,例如,如果網址和下拉菜單中包含一個空格,它就會打破。所以www.domain.com//dropdown=Beta魚 - 任何想法? – fightstarr20

+0

@ fightstarr20:我看到你的網址像www.domain.com//dropdown=Beta Fish ...所以請把它改成www.domain.com/?dropdown=Beta Fish ...現在它會起作用..見這個小提琴:http://jsfiddle.net/RYh7U/62/ – Pandian