我正在尝试使用一组文本,当我按下一个按钮时,它会更改为另一组文本。我一直在尝试很多不同的方法,似乎无法让它发挥作用。这是一个有效的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的新手,所以我可能会遗漏一些非常明显的东西。任何建设性的批评都会有所帮助。
答案 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];
}
}
}