我有两个独立的.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>
答案 0 :(得分: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
作为就绪通知
答案 1 :(得分:0)
您可以使用jQuerys getScript() - http://api.jquery.com/jQuery.getScript/
因此,当用户进行选择时,您只需加载相关的js文件
答案 2 :(得分:0)
您是否只需要加载其中一个脚本?您可以创建两个JavaScript函数,每个函数包含相关脚本中的代码,并执行与用户选择相对应的任何一个。
没有理由不能在两个单独的.js文件中定义它们,只要你在html中包含它们。
这似乎是一种执行特定代码的简单方法,而不必担心动态加载代码。