' Uncaught TypeError:undefined不是函数'不断出现不同的代码行

时间:2014-11-15 22:30:04

标签: javascript jquery

我正在尝试使用一组文本,当我按下一个按钮时,它会更改为另一组文本。我一直在尝试很多不同的方法,似乎无法让它发挥作用。这是一个有效的Jsfiddle

我一直在' Uncaught TypeError:undefined不是一个函数'为行

var $rep = $update.textContent.substring(1);

我已经改变了这行代码,但是在同一个函数中的不同代码行上会得到相同的错误。

function createAnswers() {
    var i;
    for (i = 0; i < 4; i++) {
        var $update = $(".answers p")[i];
        var $rep = $update.textContent.substring(1);
        console.log($rep);
        var answerText = document.createTextNode(randomImage.randomAnswers[i]);
        if (usedImages.length >= 1) {
            $rep.replaceWith(answerText);
        }
            $update.appendChild(answerText);
    }
}

我仍然是Javascript的新手,所以我可能会遗漏一些非常明显的东西。任何建设性的批评都会有所帮助。

2 个答案:

答案 0 :(得分:1)

您的功能应如下所示:

function createAnswers() {
    var i,
        $answers = $(".answers p");

    for (i = 0; i < 4; i++) {
        var $update = $answers[i];
        var $rep = $update.textContent.substring(1);
        var answerText = document.createTextNode(randomImage.randomAnswers[i]);

        if (usedImages.length >= 1) {
            $update.textContent = $update.textContent.replace($rep, answerText.textContent);
        }

        $update.appendChild(answerText);
    }
}

您不需要在var $update = $(".answers p")[i];之后使用jQuery函数,因为$ update成为DOM节点。

答案 1 :(得分:0)

我明白了。谢谢大家的帮助。我意识到我需要指定文本节点的使用,并直接更新文本节点。这是我的最终代码:

function createAnswers() {
    var i,
        $update;

    for (i = 0; i < 4; i++) {
        $update = $(".answers p")[i];
        console.log($update);
        var answerText = document.createTextNode(randomImage.randomAnswers[i]);
        if (usedImages.length === 0) {
            $update.appendChild(answerText);
        }
        else {
            $update.childNodes[1].nodeValue = randomImage.randomAnswers[i];
        }
    }
}