一个图像,另一个音频,不明白为什么相似的结构在javascript中不适用。(源不变)

问题描述 投票:0回答:1

这是第一个脚本,它的效果和我想象的一样好

const maxNum = 4 //number of pages
pgNum = 1 //page number

chara = [{
    name: "A",
    aspect: "apple",
    src: "https://files.catbox.moe/r0k1oc.png",
  },

  {
    name: "B",
    aspect: "banana",
    src: "https://files.catbox.moe/82uq7t.png",
  },

  {
    name: "C",
    aspect: "creativity",
    src: "https://files.catbox.moe/eiv3z6.png",
  },

  {
    name: "D",
    aspect: "dog",
    src: "https://files.catbox.moe/stfuzk.png",
  },
]
charaImage = document.getElementById("charaImg");
charaImage.src = chara[pgNum - 1].src
document.getElementById("charaName").innerHTML = chara[pgNum - 1].name + ", the " + chara[pgNum - 1].aspect + " object";

//BUTTONS to increase and decrease pgNum, thus changing shown character name, image, description on the page

function previous() {
  if (pgNum > 1) {
    pgNum--
  } else {}
  charaImage = document.getElementById("charaImg");
  charaImage.src = chara[pgNum - 1].src
  document.getElementById("charaName").innerHTML = chara[pgNum - 1].name + ", the " + chara[pgNum - 1].aspect + " object";
} //the last 3 lines seem to work regardless of pgNum after pressing the button.

function next() {
  if (pgNum < maxNum) {
    pgNum++
  } else {}
  charaImage = document.getElementById("charaImg");
  charaImage.src = chara[pgNum - 1].src
  document.getElementById("charaName").innerHTML = chara[pgNum - 1].name + ", the " + chara[pgNum - 1].aspect + " object";
}
<main>
  <h1 id="charaName"></h1>
  <p id="charaDes"></p>
  <button class="button" onclick="previous()">previous</button>
  <button class="button" onclick="next()">next</button>
  <img id="charaImg"></img>
</main>

但是在第二个脚本中,它没有按预期工作

Num = 1
const maxNum = 2
document.getElementById("Num").innerHTML = Num
song = [{
    title: "A",
    src: "https://files.catbox.moe/c5zrzm.mp3"
  },
  {
    title: "B",
    src: "https://files.catbox.moe/jzu1ls.mp3"
  },
]
document.getElementById("musicTitle").innerHTML = song[Num - 1].title
music = document.getElementById("music");
music.src = song[Num - 1].src;

function next() {
  if (maxNum > Num) {
    Num++;
  } else {
    Num = 1;
  }
  music = document.getElementById("music")
  music.src = song[Num - 1].src //it doesn't seem to reflect the change despite its similarity of structure in the first script.
  document.getElementById("Num").innerHTML = Num
  document.getElementById("musicTitle").innerHTML = song[Num - 1].title;
}
<h1 id="Num"></h1>
<h1 id="musicTitle"></h1>
<button onclick="next()">pipi</button>
<audio controls>
            <source id="music" type="audio/mpeg">
        </audio>

我看到 Num 变量和 Song.title 变量都发生了变化,并在页面上正确应用,但 Song.src 没有变化。我想知道问题是什么。

在这两个脚本中,我希望页面中显示的图像/音频根据 pgNum/Num 变量进行更改,该变量随着单击按钮而更改。 另外,有没有办法避免在第一个脚本中重复这 3 行 3 次?

charaImage = document.getElementById("charaImg");
charaImage.src = chara[pgNum-1].src
document.getElementById("charaName").innerHTML = chara[pgNum-1].name + ", the " + chara[pgNum-1].aspect + " object";
javascript html variables dom
1个回答
0
投票

它不会表现得像图像,您必须手动加载它们对媒体元素有限制(由于潜在的滥用或其他原因)

<html>

<h1 id="Num"></h1>
<h1 id="musicTitle"></h1>
<button onclick="next()">pipi</button>
<audio controls id="audio">
            <source id="music" type="audio/mpeg">
        </audio>


<script type="text/javascript">
Num = 1
const maxNum = 2
document.getElementById("Num").innerHTML = Num
song = [{
    title: "A",
    src: "https://files.catbox.moe/c5zrzm.mp3"
  },
  {
    title: "B",
    src: "https://files.catbox.moe/jzu1ls.mp3"
  },
]
document.getElementById("musicTitle").innerHTML = song[Num - 1].title
music = document.getElementById("music");
music.src = song[Num - 1].src;

function next() {
  if (maxNum > Num) {
    Num++;
  } else {
    Num = 1;
  }
  music = document.getElementById("music")
  music.src = song[Num - 1].src //it doesn't seem to reflect the change despite its similarity of structure in the first script.
  audio = document.getElementById("audio");
  audio.load()
  audio.play()
  document.getElementById("Num").innerHTML = Num
  document.getElementById("musicTitle").innerHTML = song[Num - 1].title;
}

</script>
</html>

© www.soinside.com 2019 - 2024. All rights reserved.