动态更改脚本src客户端

Bog*_*dan 6 javascript javascript-events

我有一个HTML页面,其中包含:

  • <select>带有onchange事件的3个选项的下拉列表到JS函数
  • 一个内部有脚本元素的DIV持有者:

这是代码:

<select onChange="getData(this.value);">
    <option value="-">Limba/Language</option>
    <option value="ro">Romana</option>
    <option value="en">Engleza</option>
</select>
<div id="output">
    <script id="widget" type="text/javascript" src="js1.js"></script>
</div>
Run Code Online (Sandbox Code Playgroud)

这是JS函数:

<script type="text/javascript">
function getData(title)
{
    switch(title)
    {
        case "ro":
            var s = document.createElement("script");
                s.type = "text/javascript";
                s.src = "js1.js";
                s.innerHTML = null;
                s.id = "widget";
                document.getElementById("output").innerHTML = s;
        break;
        case "en":
            var s = document.createElement("script");
                s.type = "text/javascript";
                s.src = "js2.js";
                s.innerHTML = null;
                s.id = "widget";
                document.getElementById("output").innerHTML = s;
        break;
        default:
        void(0);
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

当我选择选项2或3时,我在浏览器中获得此输出: [object HTMLScriptElement]

我想要做的是根据下拉元素中选择的值切换脚本标记的src属性.我想做这个客户端,最好没有任何外部库...

Jos*_*eph 8

另一个解决方案很棒:)但是如果你仍然想通过JavaScript创建元素,你应该使用appendChild而不是innerHTML ...

这是你的JavaScript应该是:)

<script type="text/javascript">
function getData(title)
{
    switch(title)
    {
        case "ro":
            var s = document.createElement("script");
                s.type = "text/javascript";
                s.src = "js1.js";
                s.innerHTML = null;
                s.id = "widget";
                document.getElementById("output").innerHTML = "";
                document.getElementById("output").appendChild(s);
        break;
        case "en":
            var s = document.createElement("script");
                s.type = "text/javascript";
                s.src = "js2.js";
                s.innerHTML = null;
                s.id = "widget";
                document.getElementById("output").innerHTML = "";
                document.getElementById("output").appendChild(s);
        break;
        default:
        void(0);
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)