我有这个 javascript 函数,它需要一些我想从外部 .txt 文件调用的变量:
<script language="JavaScript">
StartCountDown("1070","08/21/2014 15:32 +0300")
StartCountDown("1071","08/21/2014 16:00 +0300")
StartCountDown("1072","08/21/2014 16:00 +0300")
... rest of the function
</script>
如果
会更好
<script language="JavaScript">
**include stuff from variables.txt here**
... rest of the function
</script>
有什么办法吗?谢谢。
选项 1:将 txt 加载到变量中
您可以通过 javascript/ajax 加载一个 .txt 文件同步。请记住,您的 javascript 代码执行将在此时等待,直到文件加载完毕。
var request = new XMLHttpRequest();
request.open('GET', 'text.txt', false);
request.send();
var textfileContent = request.responseText;
您也可以异步执行此操作。虽然在这种情况下您的程序逻辑将不得不等待文件加载:
var request = new XMLHttpRequest();
request.open('GET', 'text.txt');
request.onreadystatechange = function() {
if (request.readyState === 4) {
var textfileContent = request.responseText;
// continue your program flow here
}
}
request.send();
从变量(气馁)执行javascript
也可以从字符串中计算 javascript 代码。虽然这种方法不鼓励:
eval(textfileContent);
选项 2:通过脚本包含 javascript
如果你要加载的是javascript,另一种解决方案是在dom中添加一个script标签:
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "text.txt";
document.body.appendChild(script);
方案三:使用json初始化变量(最适合你的需求)
如果您只是加载变量值,json 可能对您更有意义。创建一个这样的文本文件:
[
["1070","08/21/2014 15:32 +0300"],
["1071","08/21/2014 16:00 +0300"],
["1072","08/21/2014 16:00 +0300"]
]
阅读 json 语法 here
像这样加载 json 文件:
var request = new XMLHttpRequest();
request.open("GET", "json.txt", false);
request.send(null);
var data = JSON.parse(request.responseText);
您的数据现在在一个数组中。您可能希望循环访问这些值:
for ( var i = 0; i < data.length; i++ ) {
var entry = data[i];
var year = entry[0];
var date = entry[1];
StartCountDown(year, date);
}
选项 4:运行前合并
如果您有预处理器设置,您可能希望使用它来将文件放在一起。或者,unix 命令行工具 cat
可以轻松合并两个文件:
cat file1.txt file2.txt > new.txt