如何在javascript中保存数组中的信息,我从文本文件中检索以供以后使用?我正在使用它来放置一些HTML,但也对用户做出反应。截至目前,我可以使用内联函数调用放置HTML,但我希望以后使用这些数据......
function get_words() {
var words = new Array();
var sylls = new Array();
var csv_file = new Array(); // for word arrays
$.get('terms.csv', function(data){
csv_file = data.split('\n');
// csv file is now in an array, split into seperate word array and syllable array
for (var i = 0; i < csv_file.length; i++) {
var both = csv_file[i].split(','); // split at the comma
words[i] = both[0]; // populate word array
sylls[i] = both[1]; // populate syllable array
put_word(words[i], sylls[i]);
};
check_resize();
});
}
function put_word(word, sylls) {
console.log(word);
// place the words into 'words' div
var divID = document.getElementById("words"); // grab 'words' div
divID.innerHTML += "<span>" + word + "</span>" + "<sup>" + sylls + "</sup> ";
}
这就是我的代码。如果在获取函数之外可以访问单词[]和sylls [],我会喜欢它。
编辑:让我更清楚(哎呀)。我在哪里声明我的数组并不重要。我知道这个的原因是因为我可以将它们放在脚本的顶部(在函数之外),在get_words()的末尾尝试console.log(单词),它将是一个空数组。var words = new Array();
var sylls = new Array();
var csv_file = new Array(); // for word arrays
$(document).ready(function(){
get_words();
});
function get_words() {
$.get('terms.csv', function(data){
csv_file = data.split('\n');
// csv file is now in an array, split into seperate word array and syllable array
for (var i = 0; i < csv_file.length; i++) {
var both = csv_file[i].split(','); // split at the comma
words[i] = both[0]; // populate word array
sylls[i] = both[1]; // populate syllable array
//put_word(words[i], sylls[i]);
};
check_resize();
});
console.log(words);
}
编辑:有人可以告诉我在哪里进行回调吗?
function get_words() {
$.get('terms.csv', function(data){
csv_file = data.split('\n');
// csv file is now in an array, split into seperate word array and syllable array
for (var i = 0; i < csv_file.length; i++) {
var both = csv_file[i].split(','); // split at the comma
words[i] = both[0]; // populate word array
sylls[i] = both[1]; // populate syllable array
//put_word(words[i], sylls[i]);
};
});
}
所以...如果我想等到这个文件被放入数组后再调用另一个函数,我该怎么做?
答案 0 :(得分:1)
var words = [];
var sylls = [];
function get_words() {
$.get('terms.csv', function(data){
// Clear the result arrays
words = [];
sylls = [];
var csv_file = data.split('\n');
// csv file is now in an array, split into seperate word array and syllable array
for (var i = 0; i < csv_file.length; i++) {
var both = csv_file[i].split(','); // split at the comma
words[i] = both[0]; // populate word array
sylls[i] = both[1]; // populate syllable array
put_word(words[i], sylls[i]);
};
check_resize();
});
}
答案 1 :(得分:0)
var words = [], sylls = [], csv_file=[];
function get_words(){ ... }
function put_word(){ ... }
function needs_words_and_sylls(){ .... }
答案 2 :(得分:0)
在javascript范围内创建并绑定到仅包含它们的函数。
对于您的情况,您的变量words
是在函数get_words
中创建的,并且只能在get_words函数中访问。要允许两个或多个函数访问同一范围,必须在同一范围内定义它们。
同样对于您的情况,您的两个函数似乎都在全局范围内定义,因此您希望两个函数都可以访问的变量也需要在全局范围内定义:
var words = new Array();
var sylls = new Array();
var csv_file = new Array(); // for word arrays
function get_words() {
$.get('terms.csv', function(data){
csv_file = data.split('\n');
// csv file is now in an array, split into seperate word array and syllable array
for (var i = 0; i < csv_file.length; i++) {
var both = csv_file[i].split(','); // split at the comma
words[i] = both[0]; // populate word array
sylls[i] = both[1]; // populate syllable array
put_word(words[i], sylls[i]);
};
check_resize();
});
}
function put_word(word, sylls) {
console.log(word);
// place the words into 'words' div
var divID = document.getElementById("words"); // grab 'words' div
divID.innerHTML += "<span>" + word + "</span>" + "<sup>" + sylls + "</sup> ";
}
答案 3 :(得分:0)
您可以做一些事情,或者将变量移出函数,如下所示:
var words = new Array();
var sylls = new Array();
var csv_file = new Array(); // for word arrays
function get_words() {
//code here
}
或者您可以将变量添加为窗口对象
function get_words() {
window.words = new Array();
window.sylls = new Array();
window.csv_file = new Array(); // for word arrays
}
我还记得能够在没有“var”的情况下定义变量,它就像窗口一样变得全局。如果有效,请告诉我。
function get_words() {
words = new Array();
sylls = new Array();
csv_file = new Array(); // for word arrays
}
答案 4 :(得分:0)
由于您正在处理异步接口以读取数据,因此您只能在此进一步构建。因此,基本上你必须扭转“将数据带入'引入处理'的目标。
您可以将处理函数注入到阅读功能中:
function get_words( process ) {
...
$.get(...){ function(data){
...
process(word, syllabs);
}
}
function put_word(w, s) {
...
}
//this is where the action starts:
get_words( put_word );