为什么我在运行 changeword 时得到单词未定义.js?



所以,我试图为我的网站制作一种单词可以更改的自动方式,它几乎有效,但是为什么我得到"未定义"这个词;你能帮忙吗?https://i.stack.imgur.com/Ss9wg.jpg

var words = ['affordable.', 'fast.', 'easy.', 'different.'],
    element = document.getElementById('wordChange'),
    currentWord = 0;
window.setInterval(function () {
    currentWord++;
    if (currentWord > words.length) currentWord = 0;
    element.innerHTML = words[currentWord];
}, 1000);
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>ColorBundle | Welcome</title>
    <!--BOOTSTRAP-->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <!--CSS-->
    <link rel="stylesheet" href="./style/style.css">
    <!--GOOGLE FONTS-->
    <link href="https://fonts.googleapis.com/css?family=Odibee+Sans|Raleway&display=swap" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Shadows+Into+Light&display=swap" rel="stylesheet">
    <!--
        font-family: 'Odibee Sans', cursive;
        font-family: 'Raleway', sans-serif;
        font-family: 'Shadows Into Light', cursive;
    -->
</head>
<body>
    <div class="nav">
        <div class="nav-brand">
            <h1>ColorBundle</h1>
        </div>
        <label for="toggle">&#9776;</label>
        <input type="checkbox" id="toggle">
        <div class="menu">
            <a href="#">HOME</a>
            <div class="menu-mobile-border"></div>
            <a href="#">ABOUT</a>
            <div class="menu-mobile-border"></div>
            <a href="#">WORKS</a>
            <div class="menu-mobile-border"></div>
            <a href="#">SERVICES</a>
            <div class="menu-mobile-border"></div>
            <a href="#">BLOG</a>
            <div class="menu-mobile-border"></div>
            <a href="#">CONTACT</a>
            <div class="menu-mobile-border"></div>
        </div>
    </div>
    <div class="top-img">
        <h2><span id="wordChange">creative.</span></h2>
    </div>

    <script src="./script/changeword.js"></script>
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</body>
</html>

你能帮我解决这个问题吗?我知道这没什么大不了的,但我很好奇是什么

遍历数组,因此索引从 0 开始。虽然words.length给你指数+1

所以你的currentWord > words.length是越界的。

if (currentWord >= words.length)

1(您的条件需要正确检查数组的长度(基于0索引(,因此currentWord > words.length更改为currentWord >= words.length

2( 您立即增加计数器,以便您看到的第一个单词位于索引 1 处,因此您可能希望将计数器增量移动到函数的底部。

var words = ['affordable.', 'fast.', 'easy.', 'different.'],
    element = document.getElementById('wordChange'),
    currentWord = 0;
window.setInterval(function () {
    if (currentWord >= words.length) currentWord = 0;
    element.innerHTML = `${currentWord}${words[currentWord]}`;
    ++currentWord;
}, 1000);
<div id="wordChange"/>

数组从index 0开始,所以通过

currentWord > words.length

你去index 4不存在的地方。 您可以通过执行以下操作来解决此问题

currentWord >= words.length

相反。

最新更新