2014-03-01 66 views
0

前段時間我決定停止使用事件屬性來分離HTML和Javascript。優化Javascript代碼<select>

所以現在我有這個HTML。

<form name="x" action="x.php" method="get"> 
    <label> 
     <select name="language" size="1" id="languageselect"> 
     <option value="da" selected>Dansk (da)</option> 
     <option value="en">English (en)</option> 
     <option value="">Brug browserens indstillinger</option> 
     </select> 
    </label> 
</form> 

和這個Javascript。 但我想知道如果我的代碼可以更好,似乎偶爾我在我的Javascript日誌文件中獲取有關「this.form.submit();」的錯誤消息。

<script type="text/javascript"> 

function languageformsubmit() { 

    'use strict'; 

    this.form.submit(); 

} 



function init_hjemmeside_addeventlistener() { 

    'use strict'; 

    var languageselect; 

    if (document.getElementById('languageselect')) { 

     languageselect = document.getElementById('languageselect'); 
     languageselect.addEventListener('change', languageformsubmit, false); 

    } 

} 



function init_hjemmeside_attachevent() { 

    'use strict'; 

    var languageselect; 

    if (document.getElementById('languageselect')) { 

     languageselect = document.getElementById('languageselect'); 
     languageselect.attachEvent('onchange', languageformsubmit); 

    } 

} 



if (window.addEventListener) { 

    window.addEventListener('load', init_hjemmeside_addeventlistener, false); 

} else if (window.attachEvent) { 

    window.attachEvent('onload', init_hjemmeside_attachevent); 

} 

</script> 

該代碼工作正常,但我想知道它是否會更好。

回答

0

你可以發佈確切的錯誤,所以我們可以幫你。 除此之外,它可以做你想做的事情,當你在select中改變選擇的選項時提交表單。順便說一下,你可以通過使用jQuery來改進它,但也許你不想那樣做。

JQuery的:

​​
+0

我不現在有錯誤信息,但我幾次,我看見它在錯誤日誌,所以我想也許我可以調用this.form之前測試的東西。我不想使用jquery。 – scootergrisen

+0

好的。我能想到的唯一的測試是this或this.form是null還是undefined。如果您看到錯誤,請將其發佈到此處。 –