我有外部js,它在我的HTML中的一個div的內部調用。 在外部文件中我有下面的代碼:調用函數形式外部js
var script = document.createElement("script");
script.innerHTML = '$("body").prepend(\'<input type="hidden" id="sid" value="0">\');var vl=0;$(".sbut").click(function(){vl ++; var snew=vl;$("#sid").val(snew).trigger("change");});';
document.head.appendChild(script);
$("#sid").change(function(){
alert("change");
});
警報不會被觸發。如果我試試這個:
var script = document.createElement("script");
script.innerHTML = '$("body").prepend(\'<input type="hidden" id="sid" value="0">\');var vl=0;$(".sbut").click(function(){vl ++; var snew=vl;$("#sid").val(snew).trigger("change");});$("#sid").change(function(){somef();alert("change");}); ';
document.head.appendChild(script);
function somef(){
alert("change");
}
比我得到,我的函數somef沒有定義。我猜這必須按照我的功能順序進行,但我不確定究竟是什麼。有人可以建議我做什麼是正確的方法嗎?另外,我的外部腳本(fscript.js)在HTML中的一個div中被調用,我無法更改它,因爲我無法訪問HTML。這就是爲什麼我追加輸入和腳本。
頁面中的哪個位置是'.sbut'元素?任何在腳本中低於腳本的'.sbut'元素都不會附加到它們的點擊處理程序。另外...如果你能夠使用ES2015(或者從它開始編譯)編寫你正在注入的HTML,使用模板字符串會更加可讀,因爲你可以在它們中使用換行符。 –
想想吧,我不明白你爲什麼把這段代碼寫成一個字符串並注入腳本標記。您已經加載了一個外部腳本,應該沒有理由不能將它寫入該文件。除非你還在這個腳本的一部分注入了jQuery,而你沒有向我們展示這些腳本標記,以確保執行順序? –
雖然,你也在腳本字符串之外使用jQuery,所以我假設它已經加載到頁面中了? –