我的目标是使用脚本开发一个非常简单的“制作你自己的故事”游戏引擎。现在,这段代码足以启动故事,但在列表中传递最终数组后会产生“未定义”。这是令人沮丧的,因为我确信我偶然发现了几次解决方案,但我不确切知道该怎么做。我只应该使用基本的JS,所以没有jquery,php等我知道那里应该有一个for循环/变量计数器。
HTML:
<p id="story">Hello.</p>
<input name="NavButton" type="button"
value="Start"
onclick= "OnPress();" />
JS:
function OnPress()
{
document.getElementById("story").innerHTML=myArray[i++];
}
var myArray = new Array();
myArray[0] = "Welcome to the Dark Abyss.";
myArray[1] = "There's a fork in the road. What to do?";
myArray[2] = "The fox doesn't talk much.";
myArray[3] = "Thank Grozia! You survived.";
var i=myArray.indexOf(myArray[0]);
答案 0 :(得分:0)
您需要确保提供一个有效的索引,即您不会在数组末尾。在这种情况下,检查就足够了:
function OnPress()
{
if(i < myArray.length) // check that i is valid
document.getElementById("story").innerHTML=myArray[i++];
else
i = 0; // reset i back to start
}
答案 1 :(得分:0)
这是一个你正在寻找的简单迭代器。 我写了onPress而不是OnPress。你不应该用大写字母写方法名。
var myArray = [
"Welcome to the Dark Abyss.",
"There's a fork in the road. What to do?",
"The fox doesn't talk much.",
"Thank Grozia! You survived."
];
var current = -1;
function onPress()
{
current = current >= myArray.length -1 ? 0 : current+1;
document.getElementById("story").innerHTML=myArray[current];
}
答案 2 :(得分:0)
在两种情况下你会得到“未定义”:
为了解决问题,您可以尝试:
代码:
function OnPress() {
i %= 4;
document.getElementById("story").innerHTML = myArray[i++];
}
var myArray = new Array();
myArray[0] = "Welcome to the Dark Abyss.";
myArray[1] = "There's a fork in the road. What to do?";
myArray[2] = "The fox doesn't talk much.";
myArray[3] = "Thank Grozia! You survived.";
var i = 0;
希望它有用。