无法使用外部javascript更改html脚本src
Cannot change html script src with external javascript
我已经阅读了我能找到的每一个谷歌结果,但这仍然不起作用。。。我所要做的就是根据单击的链接来更改脚本源。源文件将由document.write返回一到两行,如下所示:
document.write(`This is content script a`);
所以我有下面的设置,一个html文件,有两个链接,调用changeSrc函数,它应该更改源:
<!DOCTYPE html>
<html>
<body>
<a id="aLink" href="#" onclick="changeSrc('a');return false;">Change to a</a/><br>
<a id="aLink" href="#" onclick="changeSrc('b');return false;">Change to b</a/><br>
<script id="contentScript" src="a.js"></script>
</body>
</html>
JS文件:
function changeSrc (arg) {
document.getElementById("contentScript").innerHTML = '';
if (arg == "a") {
document.getElementById("contentScript").innerHTML = '<script id="contentScript" src="a.js"></script>';
} else if (arg == "b") { {
document.getElementById("contentScript").innerHTML = '<script id="contentScript" src="b.js"></script>';
}
}
为什么点击链接时脚本源没有改变?!
谢谢你抽出时间,我觉得自己像个十足的白痴。。。
尝试
document.getElementById("ContentScript").src = your_script_source_here
希望这能有所帮助!
- 不能使用重复ID
aLink
aLink
。你知道什么是身份证 - 不要使用内联JS。使业务逻辑远离(View)模板
使用脚本方式将侦听器分配给元素。看看addEventListener
</a/>
应为</a>
#contentScript
是<script>
标签。为什么要在上面使用innerHTML = ""
?脚本执行不在文本HTML的范围内- 您可以将所需"src"存储到锚点
data-*
属性中 - 由于
<script>
标签的"src"
只能更改一次
您应该动态创建一个全新的<script>
元素:
<a id="aLink" data-src="http://jsbin.com/taqadu/1/js" href="#">Change to a</a><br>
<a id="bLink" data-src="http://jsbin.com/dizavo/1/js" href="#">Change to b</a>
<script>
function id(v){return document.getElementById(v);} // Helper
function changeSrc(event){
event.preventDefault(); // instead of `return false;`
// Get already existent one
var contentScript = id("contentScript");
// if exists, remove it
if(!!contentScript) contentScript.parentNode.removeChild(contentScript);
// Create a new one
contentScript = document.createElement("script");
// Assign ID
contentScript.id = "contentScript";
// Assign "src" from the anchor's data-* attribute
contentScript.src = this.dataset.src;
// Finally add the newly generated `script` to body
document.body.appendChild( contentScript );
}
id("aLink").addEventListener("click", changeSrc);
id("bLink").addEventListener("click", changeSrc);
</script>
https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement
https://developer.mozilla.org/en/docs/Web/API/Node/appendChild
https://developer.mozilla.org/en-US/docs/Web/API/Node/removeChildhttps://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault
相关文章:
- 如何使用jquery更改html中的背景颜色
- 选择框更改后Jquery更改html
- 在页面呈现之前更改HTML数据
- 如果使用javascript函数屏幕太小,我该如何更改HTML文件的背景色
- 使用 Pure JS 更改 HTML 标记名称
- 加载页面时更改html页面的位置
- 使用JavaScript变量更改HTML组类
- 如何使用Javascript更改HTML元素的类
- 在不更改HTML源代码的情况下,在管理员TinyMCE编辑器中突出显示文本
- Javascript单击更改HTML的内容
- 使用javascript更改HTML文件的输入值
- 是否可以更改html<输入>文件
- 无法通过内容脚本使用jQuery更改HTML元素的样式
- 使用jquery为移动布局更改html层次结构
- 更改html标记或其子标记(而不是其属性)文本中的日期格式
- 如何通过JS在不干扰其标记的情况下更改HTML文档中字符串的所有实例
- 如果值为空或0,如何更改html select标记的边框颜色
- 使用$watch更改html内容
- 更改HTML按钮值的颜色,其中值来自调用Javascript的onclick
- ajax成功响应后如何更改html类