我有一个数组,我已经从输入数据中压缩了很多。我正在输入一个很长的例子,因为我认为这将有助于解释我以后需要做什么。 (我没有输入所有的html代码,但它显示了我需要的东西,所以没有问题)。
storyArray=["#C1",
"String of HTML Code that displays first message",
"String of HTML Code that displays second message",
"#D1",
"String of HTML Code that displays two buttons, B1A & B1B",
"#B1A",
"String of HTML Code that displays if button B1A is clicked",
"#>C2",
"#B1B",
"String of HTML Code that displays if button B1B is clicked",
"#>C2",
"#C2",
"String of HTML Code that displays third message",
"#D2",
"String of HTML Code that displays two buttons, B2A & B2B",
"#B2A",
"String of HTML Code that displays if button B2A is clicked",
"#>C3",
"#B2B",
"String of HTML Code that displays if button B2B is clicked",
"#>C3",
"#C3",
"Final string of HTML Code"]
像#> C2和#> C3这样的数组元素意味着“分别跳转到#C2和#C3后面的元素。
像#C1,#C2,#C3这样的数组元素是我想要跳转的标记(见上文)。
数组元素#D1表示如果在按钮出现时单击A,则跳转到#B1A后的元素,如果单击B,则跳转到#B1B后的元素。
因此,如果用户点击#D1中的按钮A和#D2中的按钮B,他们应该看到:
“显示第一条消息的HTML代码字符串”
“显示第二条消息的HTML代码字符串”
“HTML代码字符串,显示两个按钮,B1A和B1B”
“单击按钮B1A时显示的HTML代码字符串”
“显示第三条消息的HTML代码字符串”
“HTML代码字符串,显示两个按钮,B2A和B2B”
“单击按钮B2B时显示的HTML代码字符串”
“HTML代码的最终字符串”
不幸的是,我似乎无法绕过我循环使用的if / then逻辑。任何建议赞赏。如果需要,我完全可以使用jQuery或类似的东西。
答案 0 :(得分:0)
您提供的示例不一致,但我根据您对您的代码的最佳理解编写了一个代码段。
function clicked() {
var idString = "#" + $(this).attr("id");
for(var i = storyArray.indexOf(idString); i < storyArray.length; i++) {
var element = storyArray[i];
if(element.charAt(0) == '#') {
if(element.charAt(1) == '>') { // it's a goto
i = storyArray.indexOf("#"+element.substring(2))+1;
}
else { // it's a label, so skip
continue;
}
}
else {
displayElement(element); // element is the string to display
}
}
}
演示:http://jsfiddle.net/fy13gzbj/2/
它使用非常简单的逻辑。基本上它从上到下执行数组就好像它是一个脚本一样。它以点击按钮的ID输入数组,例如#B2B
。它继续沿阵列向下,直到它到达goto命令(#>
)或数组的末尾。