数组中的拼接对象 - 未定义错误

时间:2018-01-01 20:56:41

标签: javascript arrays undefined splice

在下面的代码中包含一个非常简单的问题游戏(正在进行中)。到目前为止,我已经能够制定一个"规则"消息通过onLoad函数显示," qDisplayLoad()"。接下来,onClick函数" qDisplayClick"任何时候有人点击,因此随机拉出阵列(qArray)。

我的问题: 如何显示从阵列中选择的问题后如何删除(拼接)?我的目标是不要重复两次相同的问题。在下面的代码中,你会发现我的业余尝试" splice" (它有点工作),但相反,数组推出" undefined"。



var qLoad = 0;
var qArray = [
    "Question 1",
    "Question 2",
    "Question 3",
    "Question 4",
    "Question 5"
];


var randomElement;

/* The text "Rules" appears when the page loads */
function qDisplayLoad() {

    if (qLoad == 0) {
        randomElement = "Rules";
        qLoad = 1; /* Changes qLoad to "1" from "0" so the array begins within the "qDisplayClick" function */
    }

    document.getElementById("questions").innerHTML = randomElement;
}

/* A new question is pulled from the array everytime the mouse is clicked (up to a maximum of 5) */
function qDisplayClick() {
    var randomNumber = Math.floor(Math.random() * qArray.length); /* Questions are randomly chosen and rounded down from the array */

    if (qLoad += 1 && !(qLoad == 7)) {
        qArray.splice(qArray,1);
        randomElement = qArray[randomNumber];

    } else if (qLoad == 0) {
        randomElement = "Rules";
    }
    if (qLoad == 7) { /* After the 5th question, text will appear for the pop up */
        randomElement = "WIP - POP UP PLACEHOLDER";
    }

    document.getElementById("questions").innerHTML = randomElement;
}




2 个答案:

答案 0 :(得分:5)

错误来自此行qArray.splice(qArray,1); 拼接方法不能将数组作为第一个参数:

array.splice(index, howmany, item1, ....., itemX)
  • index必需。
  • howmany可选。
  • item1,...,itemX可选。要添加到数组的新项目

答案 1 :(得分:1)

非常感谢Melchia。

是的,你是对的!我可以通过更新以下内容来解决此问题:



randomElement = qArray[randomNumber];
qArray.splice(randomNumber,1);




谢谢,新年快乐!