将参数传递到准备好文档的.js文件
Pass parameters to .js file on document ready
我看到有几个人问了这个问题的部分内容,并尝试了各种解决方案,但似乎都不起作用。我不确定是组合还是我项目中的其他原因导致它不起作用。
在我的项目中,我有各种页面显示类似的DataTables。我想把这些表的初始化放在一个文件中,以避免重复。但我想传入一些参数,以说明例如列标题之间的细微差异。让它复杂化的是,初始化在文档上完成并不奇怪。准备。
我尝试过的事情:
通过SRC属性将vars传递给JavaScript
http://feather.elektrum.org/book/src.html
在下面的代码示例中,我从未遇到第二个警报。如果它达到第二个和第三个警报,并且test_var的内容正确,我想要什么:
(cs)html文件
<script>
$(document).ready(function () {
var test_var = "Hopefully this has worked";
alert("Pre TestScript");
$.getScript("TestScript.js"); // Tried different paths to the file here as well
});
</script>
TestScript.js
alert("In the TestScript");
alert("Test variable is: " + test_var);
也许我说的都错了,有一种不同/更简单的方法可以在文档期间将参数传递到脚本(文件)。ready
最简单的方法是(假设变量名test_var
不是全局变量或内置属性/方法)
<script>
$(document).ready(function () {
var test_var = "Hopefully this has worked";
alert("Pre TestScript");
window.test_var = "Hopefully this has worked";
$.getScript("TestScript.js"); // Tried different paths to the file here as well
});
</script>
上面我假设test_var将仅在document.ready
内部定义。否则,如果它是一个全局变量,则可以在不使用window
的情况下访问它。
在您的TestScript.js中,只需在消耗完后删除变量即可
alert("In the TestScript");
alert("Test variable is: " + test_var);
delete window.test_var;
除了迄今为止提出的其他出色的解决方案外,还有一个不同的选择,那就是将您需要定义的变量放在HTML中,例如数据属性、
既然你无论如何都在使用jQuery,那么这样的东西就会起作用:
$(document).ready(function() {
var test_var = $('.data-container').data('test-var');
alert('Don''t be alarmed: '+test_var);
});
.data-container {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="data-container" data-test-var="This is just a test"></div>
您可以在包含的任何文件中访问这些数据属性,因此不必担心来回传递变量。
当然,如果您不只是为了保存变量而添加div,而是为那些实际会受到变量影响的元素添加数据属性,那么这个解决方案是最有意义的
不幸的是,您无法通过URL将参数传递给JS文件,因为在JS代码中检索文件的请求不可用。
相反,您可以在将JS文件包含在页面中之前声明变量,然后可以在页面中读取该文件,类似于以下内容:
foo.html
<script>
var test_var = "Hopefully this has worked";
</script>
<script src="testscript.js"></script>
testscript.js
console.log(test_var); // = "Hopefully this has worked"
您需要将代码封装在一个函数中:
function testScript(test_var) {
alert("In the TestScript");
alert("Test variable is: " + test_var);
}
然后你可以这样使用它:
<script>
$(document).ready(function () {
var test_var = "Hopefully this has worked";
alert("Pre TestScript");
$('<script>')
.attr('type', 'text/javascript')
.attr('href', 'TestScript.js')
.appendTo('head');
testScript(test_var);
});
</script>
我认为这应该能解决你的问题。在html页面中包含TestScript.js。
(cs)html文件
<script>
$(document).ready(function () {
var test_var = "Hopefully this has worked";
alert("Pre TestScript");
executeCommonScript();
});
</script>
TestScript.js
function executeCommonScript(){
alert("In the TestScript");
alert("Test variable is: " + test_var);
}
许多人正确回答了我的问题,谢谢大家。我在让它工作时遇到的问题是,我试图将参数传递到的脚本文件位于我的Views/Shared文件夹中,如这里所述,该文件夹已被阻止。
一旦我把我的脚本从Views文件夹中移出,一切都很好。除了上面的答案之外,我发现最简单的是这个
$(document).ready(function () {
test_var = "Hopefully this has worked";
$.getScript("TestScript.js"); // Tried different paths to the file here as well
});
- JS文件的路径正在消失
- 我的外部js文件无法加载
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 动态加载和卸载js文件
- 如何将变量传递到另一个js文件
- 如何将所有JS文件连接到一个文件夹中
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 如何将模板中的标记脚本移动到.js文件中
- 什么's是连接供应商js文件的最佳方式
- 如何在定义js文件后为外部javascript文件设置变量
- 如何在JS文件中获取资源(.resx)字符串
- 将*.js文件的内容放入Object中
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 如何使用Gmail运行.js文件
- 如何定义一个模块并使用它来分离js文件
- Angular JS文件上传到托管服务器
- 如何引用HTML中节点模块中的js文件
- 如何将JS文件从其他文件夹链接到页面