我有外部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,所以我假设它已经加载到页面中了? –