2015-08-22 126 views
1

我有一個像選擇對象:如何動態更改頁面的JavaScript?

<select id="mySelect" onchange = "start()" > 
    <option>Apple</option> 
    <option>Pear</option> 
    <option>Banana</option> 
    <option>Orange</option> 
</select> 

現在,我想改變JavaScript作爲每mySelect的價值。例如,如果它的值是「Apple」,那麼我想將JavaScript設置爲「Apple.js」。另外,我在包含函數start()的頁面中有一個現有的JavaScript。我希望新的JavaScript覆蓋現有的JavaScript。如何實現這一目標?

回答

2

您可以動態加載腳本:

$.loadScript('Apple.js', function(){//url you can specify 
    //Yayhhh!! your script loaded 
}); 

或使用getscript()

$.getScript("ajax/test.js", function(data, textStatus, jqxhr) { 
    //Yayhhh!! your script loaded 
}); 

如您對onchange()活動中提及start()您可以使用:

HTML片段:

<select id="mySelect" onchange = "start(this.value)" > 
             ^^^^^^^^^^====>passing current selected value 

腳本:

var start = function(val){ 
    if(val == 'Apple'){ 
     $.getScript("ajax/test.js", function(data, textStatus, jqxhr) { 
      console.log(data); // Data returned 
      console.log(textStatus); // Success 
      console.log(jqxhr.status); // 200 
      console.log("Load was performed."); 
     }); 
    } 
} 
+0

請告訴'function(data,textStatus,jqxhr)'做什麼? – anshabhi

+0

我已經添加了這個功能的一些信息。在這裏你可以找到更多信息https://api.jquery.com/jquery.getscript/ – Manwal

0
function start(){ 
    console.log("test"); 
} 
function start(){ 
console.log("test2"); 
} 

start() 

嘗試在你的瀏覽器中執行的控制檯面板此代碼。你會看到它顯示你test2。當你加載一個和以前一樣名字的新函數時,只需用新的函數覆蓋舊函數即可。

只需通過$.getScript加載JavaScript即可使您的功能從新文件加載。