我似乎无法为变量分配数组值。它总是返回undefined。
在我的代码中,我设置了currentWord = text [wordPos]。在代码的最后我有控制台记录的currentWord和文本[wordPos]。我的想法是他们应该返回相同的价值,但他们不会。 currentWord返回undefined,text [wordPos]返回正确的值(' text'数组中的第一个单词)。
解决。我错误地忘记了我有2个数组,并认为文本数组不是空的,但确实如此。单词数组是我填写在单独文件中的数组。
var text = Array();
var wordPos = 0;
var currentWord = text[wordPos];
function gen() {
text = [];
var random;
for (var i = 0; i < 10; i++) {
random = words[Math.floor(Math.random() * 50)];
text.push(random);
}
document.getElementById('text').innerHTML = text.join(" ");
console.log(currentWord);
console.log(text[wordPos]);
}
&#13;
答案 0 :(得分:0)
当前工作是未定义的,因为您创建了一个数组对象但从未将值推入其中。它传输变量的当前值而不是引用。
答案 1 :(得分:0)
文本的索引0没有值。如果为文本数组指定一些值,那么你应该很好!
答案 2 :(得分:0)
<强>更新强>:
阅读上面关于原始示例中两个阵列的OP注释。根据此信息,以下脚本模拟50个不同值的导入数组单词,以生成十个以空格分隔的数字的文本并指示其第一个值:
// simulating an array imported from a separate file
var words = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50];
function gen() {
var wordPos = 0;
var currentWord = "";
var arr = [];
var randomVal;
var d = document;
d.g = d.getElementById;
var pText = d.g('text');
// get each of 10 values by randomly selecting an element's key
for (var i = 0; i < 10; i++) {
randomVal = words[ Math.floor( Math.random() * 50 ) ];
arr.push( randomVal );
}
pText.innerHTML = arr.join(" ");
currentWord = arr[wordPos];
console.log("Current word: ",currentWord );
}
gen();
&#13;
<p id="text"></p>
&#13;
此脚本随机选择10个数字,并通过变量 randomVal 将它们添加到空数组中。此变量在for循环的每次迭代中获取一个值,在此期间,变量将传递给 arr 的push()方法,以便将其附加到数组中。一旦循环终止,脚本joins空格字符上的 arr 元素,产生一个数字值以空格分隔的字符串。
当console.log语句显示文本中出现的第一个数值时,可以看出脚本正常工作。