1

所以这是我的问题,(我知道这可能是一个非常简单的问题,但我对 JavaScript 完全陌生)。所以我有一个报价清单。我需要一个脚本,每次用户单击窗口的任何部分时,它都会根据我想要的时间顺序更改报价。然后当报价完成时再次重新启动。所以让我说,一旦用户打开页面,我有一个带有quote1的段落,而不是用户在任何地方点击,这会发生:同一段落得到quote2。

4

3 回答 3

2

很难具体回答,因为你留下了很多悬而未决的问题。但是,从概念上讲,步骤如下:

  1. 注册一个单击事件处理程序,以便在发生所需单击时调用您的代码。
  2. 当您的点击处理程序被调用时,您需要获取<p>要更改的标签的 DOM 对象。
  3. 然后,您需要获取下一个要显示的报价。据推测,您会将这些存储在一个数组中,并保留当前显示的数组位置的索引,以便获得下一个。如果您希望它在不同的页面加载中工作,那么您需要将索引存储在 cookie 中,以便它持续到此计算机上的其他页面加载。
  4. 获得 DOM 元素和引号后,只需设置 DOM 元素的 innerHTML 属性即可插入所需的引号。

如果您的 HTML 是这样的:

<p id="theQuote">This is the first quote</p>

并且,您希望单击此按钮来更改报价:

<button onclick="changeQuote()">Change Quote</button>

或者,如果您想点击页面中的任何位置,您可以将其用于您的正文标签:

<body onclick="changeQuote()">

然后,您可以使用以下代码执行此操作:

var quoteIndex = 0;
var quotes = [
    "First Quote",
    "Second Quote",
    "Third Quote"
];
function changeQuote() {
    ++quoteIndex;
    if (quoteIndex >= quotes.length) {
        quoteIndex = 0;
    }
    document.getElementById("theQuote").innerHTML = quotes[quoteIndex];
}

如果您确实希望单击页面中的任何位置来旋转引用(这似乎不太可能是正确的设计),那么您可以将点击处理程序分配给 body 标记。

于 2012-12-24T04:39:45.470 回答
0

你有什么尝试?

在这里,我使用 jquery 来获得更快的代码

var quotes = ["quote1","quote2"];
var current = 0;

function changeQuote(){
    if (current >= quotes.length) current = 0;
    document.getElementById("paragraph").innerHTML(quotes[current]);
    current++;
}

document.body.onclick = changeQuote;
于 2012-12-24T04:42:10.510 回答
0

尝试这样的事情:

<html>
<head>
<script type="text/javascript">
    var quotes = ["Quote 1", "Quote 2"]
    var index = 0;

    function updateQuote() {
        index = index + 1;
        if(index == quotes.length) {
            index = 0;
        }

        document.getElementById("myQuote").innerHTML = quotes[index];
    }
</script>
</head>
<body onClick="updateQuote(); return false;">
<p id="myQuote"></p>
</body>
</html>
于 2012-12-24T04:42:14.270 回答