无法使用外部JavaScript更改html脚本src

时间:2015-12-24 01:07:48

标签: javascript html

我已经阅读了我能找到的每一个谷歌搜索结果,但这仍然无法正常工作...我想要做的就是根据点击的链接更改脚本来源。源文件将有document.write返回的一行或两行,如下所示:

document.write(`This is content script a`);

所以我有以下设置,一个带有两个调用changeSrc函数的链接的html文件,它应该更改源代码:



<!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>
&#13;
&#13;
&#13;

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>';
    }

}

为什么链接上的脚本源不会改变?!

谢谢你的时间,我觉得自己像个白痴......

2 个答案:

答案 0 :(得分:1)

尝试

document.getElementById("ContentScript").src = your_script_source_here

希望这有帮助!

答案 1 :(得分:-2)

  1. 您无法使用重复ID aLink aLink。你知道什么是身份证。
  2. 请勿使用内嵌JS 。使业务逻辑远离( View )模板 使用脚本方式将侦听器分配给元素。看看addEventListener
  3. </a/> ???应该是</a>(在跳转到JS之前请学习HTML
  4. #contentScript<script>标记。你为什么要使用innerHTML = ""?脚本执行不在文字HTML的范围内。
  5. 您可以将所需的 “src”存储到锚data-*属性
  6. 由于只能更改"src"标记的<{1}} 一次 ... 您应该动态创建一个全新的<script>元素
  7. <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/removeChild https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
    https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault