-1

我有两个单独的 .js 文件,根据用户在 select 标记中对表单所做的选择,我希望在 html 页面上使用特定于用户请求的 .js 文件。

这是我的代码:

<script type="text/javascript"> 
 $(document).ready(function(){
    if (document.getElementById('analyses').value == 'distance'){

 <script src="/static/analysis.js"></script>

    }else{
 <script src="/static/another.js"></script>
    }
   });
</script>

html表单:

<form id="eventForm">            
     <select name="event" id="abc">
        <option value="" disabled="disabled" selected="selected">Select Event</option>
        <option value="US">US</option>
        <option value="UK">UK</option>
        <option value="Fr">France</option> 
     </select>             

     <select name="analysis" id="analyses">
        <option value="" disabled="disabled" selected="selected">Select Analysis</option>
        <option value="distance">distance</option>
        <option value="other">other</option>
     </select>

    <input type="submit" id="open" onclick="heading()" value="Start Analysis"/>

目前它只运行 /static/analysis.js 文件,无论用户选择如何。

谢谢

编辑:

<script>

function loadScript(path) {
    var head=document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');
    script.setAttribute('src', path);
    head.appendChild(script);
}


$(document).ready(function(){
if (document.getElementById('analyses').value == 'distance'){

loadScript("/static/analysis.js");

}else{
loadScript("/static/analysisfdfdf.js");
}
});
</script>
4

3 回答 3

1

可以使用该函数动态加载其他JS文件

function loadScript(path) {
    var head=document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');
    script.setAttribute('src', path);
    head.appendChild(script);
}

用法:

loadScript("/static/analysis.js");

请记住,脚本将被异步加载,因此您不能假设在该行之后加载了脚本。您将需要加载的脚本来执行callback准备好的通知

于 2012-12-05T17:41:21.480 回答
0

您可以使用 jQuerys getScript() - http://api.jquery.com/jQuery.getScript/

因此,当用户做出选择时,您只需加载相关的 js 文件

于 2012-12-05T17:34:05.863 回答
0

您是否只需要加载其中一个脚本?您可以创建两个 JavaScript 函数,每个函数都包含来自相关脚本的代码,然后执行对应于用户选择的任何一个。

没有理由不能在两个单独的 .js 文件中定义它们,只要将它们都包含在 html 中即可。

这似乎是一种执行特定代码的更简单方法,而不必担心动态加载代码。

于 2012-12-05T17:54:43.420 回答