0
<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ファイルを動的に(条件に基づいて)挿入しようとしています。しかし、これは機能していません。誰かがここで何が問題なのか教えてもらえますか?

4

4 に答える 4

4

getScript(url)を探していると思います:

http://api.jquery.com/jQuery.getScript/

于 2012-05-12T12:59:43.577 に答える
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>

これは、スクリプトがscriptD要素の前に呼び出されたときに、スクリプトがDOMで見つけることができないためです。

于 2012-05-12T13:02:19.137 に答える
1

<script id='scriptD'>DOMに存在する前に、スクリプトを解析して実行しているようです。関数をで実行するか、実行$(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>
于 2012-05-12T13:01:35.153 に答える
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>
于 2012-05-12T13:04:49.277 に答える