增加变量函数不起作用

时间:2014-03-05 20:19:40

标签: javascript

我从头开始构建一些东西,虽然我是JavaScript的新手。现在,我想要的是一个变量 - currBook - 在按下按钮时增加1。该变量控制从数组中提取的内容 - bookTitlesList。我现在可以显示标题,但变量不会增加。应该增加它的函数,advanceBooks,正在工作,因为我使用了一个警报来确保。任何帮助,将不胜感激!以下是代码。

我的JavaScript

<script>
var bookTitlesList = ["To Kill A Mockingbird", "The Lord of the Rings", "A Tale of Two Cities"]; 
var currBook = 0; 
var bookTitle = document.getElementById("bookTitle"); 
var nextBook = document.getElementById("nextBook");

function loadTitle() { 
    bookTitle.innerHTML = bookTitlesList[currBook]; 
    nextBook.innerHTML = bookTitlesList[currBook+1]; 
};

function advanceBook() { 
    alert("This works!"); 
    currBook++; 
}; 
console.log(advanceBook);
</script>

我的HTML

<html>
<body onload="loadTitle()">
    <h1>Top 100 Best Selling Books</h1>
    <h2 id="bookTitle">Book Titles Go Here</h2>
    <button onclick="advanceBook()" id="nextBook">The Next Book Title Goes Here</button>
    <script type="text/javascript" src="script.js"></script>
</body>
</html>

4 个答案:

答案 0 :(得分:2)

您确实在呼叫advanceBook(),但您在任何时候都没有呼叫loadTitle(),这是在您的信息页中显示下一本书的标题所必需的。

答案 1 :(得分:2)

当你前进时,你也应该致电loadTitle()来更新DOM中的书名。

function advanceBook() { 
    alert("This works!");
    currBook++;
    loadTitle();
};

答案 2 :(得分:1)

当您致电advanceBook()时,您需要再次致电loadTitle()(这就像刷新您的观点一样)。

此外,您需要确保不要破坏bookTitlesList阵列;例如,你可以把它包起来,所以在最后一本书之后你再次获得第一本书:

// get next book index and wrap when reaching the end
function nextBookIndex(bookIndex)
{
    return (currBook + 1) % bookTitlesList.length;;
}

function advanceBook() { 
    currBook = nextBookIndex(currBook);
    loadTitle(); // update page
}; 

function loadTitle() { 
    bookTitle.innerHTML = bookTitlesList[currBook]; 
    nextBook.innerHTML = bookTitlesList[nextBookIndex(currBook)];
};

答案 3 :(得分:0)

console.log(advanceBook);

请注意,这不会调用advanceBook,而只是将其称为碰巧保存函数的变量。要调用advanceBook,即使它没有返回任何内容,请使用:

console.log(advanceBook());