为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我在运行 changeword.js 时会得到 undefined 这个词?

为什么我在运行 changeword.js 时会得到 undefined 这个词?

叮当猫咪 2022-01-07 13:11:27
所以,我试图为我的网站制作一种可以自动更改单词的方式,它几乎起作用了,但是我知道为什么我会得到“未定义”这个词;你能帮忙吗?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><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>你能帮我解决这个问题吗?我知道这没什么大不了的,但我很好奇是什么来的
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

您遍历数组,因此索引从 0 开始。而words.length为您提供索引 + 1

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

做 if (currentWord >= words.length)


查看完整回答
反对 回复 2022-01-07
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

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"/>


查看完整回答
反对 回复 2022-01-07
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

数组从index 0这样做开始

currentWord > words.length

你去index 4哪个不存在。你可以通过这样做来解决这个问题

currentWord >= words.length

反而。


查看完整回答
反对 回复 2022-01-07
  • 3 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信