<script type="text/javascript">
if (SOMECONDITION) {
$("#scriptD").attr("src", "../../Scripts/A.js");
} else {
$("#scriptD").attr("src", "../../Scripts/B.js");
}
</script>
<script id="scriptD" src="" type="text/javascript"></script>
我正在尝试动态插入.js
文件(基于条件)。但这不起作用。谁能告诉我这里的问题是什么?
答案 0 :(得分:4)
我认为您正在寻找getScript(网址):
答案 1 :(得分:3)
您正在尝试的方法之一是使用$.getScript()
if (SOMECONDITION) {
$.getScript("a.js");
} else {
$.getScritp("b.js");
}
此外,如果您将脚本放在<script>
元素
<script id="scriptD" src="" type="text/javascript"></script>
<script type="text/javascript">
if (SOMECONDITION) {
$("#scriptD").attr("src", "../../Scripts/A.js");
} else {
$("#scriptD").attr("src", "../../Scripts/B.js");
}
</script>
这是因为当在元素之前调用它时,脚本将无法在DOM上找到scriptD
。
答案 2 :(得分:1)
看起来你在DOM中存在<script id='scriptD'>
之前解析并执行脚本。执行$(document).ready()
上的函数或重新排列它,以便脚本标记在执行之前存在。
<script type="text/javascript">
$(document).ready(function() {
if (SOMECONDITION) {
$("#scriptD").attr("src", "../../Scripts/A.js");
} else {
$("#scriptD").attr("src", "../../Scripts/B.js");
}
});
</script>
<script id="scriptD" src="" type="text/javascript"></script>
答案 3 :(得分:0)
您可能想尝试一下:
<script type="text/javascript" id="scriptD" src=""></script>
<script type="text/javascript">
(function () {
if (SOMECONDITION) {
$("#scriptD").attr("src", "../../Scripts/A.js");
} else {
$("#scriptD").attr("src", "../../Scripts/B.js");
}
})();
</script>
要更改src的脚本必须在对其属性进行任何更改之前存在。 或者你可能想尝试这种方式 - 没有空的src脚本:
<script type="text/javascript">
(function () {
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "../../Scripts/" + (SOMECONDITION ? "A" : "B") + ".js");
document.getElementByTagName(head)[0].appendChild(script);
})();
</script>