javascript - 在Javascript中将句子作为元素放入数组中,这可能吗?

标签 javascript html arrays

当我单击“上一个”或“下一个”时,我尝试使用下图更改句子。 首先,我可以像这样将句子作为元素放入数组中吗?

var content = new Array("Big sale!","Children's Day-Special Sale",
"Buy here","Click here to sign up");

HTML

<table>
  <tbody>
  <tr>
    <td><span onclick="previousImg()">pre</span></td>
    <td><img id="slideImage" src="img/promotion1.jpg"></td>
    <td><span onclick="nextImg()">next</span></td>
  </tr>
  <tr>
    <td colspan="3"><span id="information">information of the Image</td>
  </tr>
</tbody>
</table>

Javascript

  var images =  new Array("img/promotion1.jpg", "img/promotion2.png",
              "img/promotion3.jpg", "img/promotion4.jpg");


  var content = new Array("Big sale!","Children's Day-Special Sale",
                "Buy here","Click here to sign up");

  var image = document.getElementById("slideImage");
  var string = document.getElementById("information");
  var imgNumber=1;
  var numberOfImg = images.length;

  function previousImg(){
      if(imgNumber > 1){
        imgNumber--;
        }
      else{
        imgNumber = numberOfImg;
      }
      var preText = content[imgNumber-1];
    image.src = images[imgNumber-1];
    string.innerHTML = preText;
    }

  function nextImg(){
    if(imgNumber < numberOfImg){
      imgNumber++;
      }
    else{
      imgNumber = 1;
      }
      var nextText = content[imgNumber-1];
    image.src = images[imgNumber-1];
    string.innerHTML = nextText;
    }

我想要“大促销!”拿出img/promotion1.jpg,“Children's-”与img/promotion2.png同时变化。

帮助我...谢谢!

最佳答案

我冒昧地重写了您的代码以包含一些最佳实践。

首先是代码:

CSS

.nav-button {
  background: none;
  border: none;
  margin: 0;
  padding: 0;
}

HTML

<table>
  <tbody>
  <tr>
    <td><button class="nav-button" onclick="previousImg()">pre</button></td>
    <td><img id="slideImage"></td>
    <td><button class="nav-button" onclick="nextImg()">next</button></td>
  </tr>
  <tr>
    <td colspan="3"><span id="information"></td>
  </tr>
</tbody>
</table>

JavaScript

var items = [
  {img: "img/promotion1.jpg", text: "Big sale!"},
  {img: "img/promotion2.png", text: "Children's Day-Special Sale"},
  {img: "img/promotion3.jpg", text: "Buy here"},
  {img: "img/promotion4.jpg", text: "Click here to sign up"}
];

var imageEl = document.getElementById("slideImage");
var infoEl = document.getElementById("information");
var itemNumber = 0;
var numberOfItems = items.length;

function setInfo() {
  var item = items[itemNumber];
  imageEl.src = item.img;
  infoEl.innerHTML = item.text;
}

function previousImg() {
  itemNumber--;
  if (itemNumber < 0) {
    itemNumber = numberOfItems-1;
  }
  setInfo();
}

function nextImg(){
  itemNumber++;
  if(itemNumber === numberOfItems) {
    itemNumber = 0;
  }
  setInfo();
}

setInfo();

现在解释一下:

我将你的图像信息和文本信息组合成一个对象数组。这允许您将数据保存在 block 中,而不是保存在不同的数组中。

我从 new Array() 转换而来使用 []{}对于 new Object() .

我改变你的<span>onclick<button>标签更好地符合屏幕阅读器,更好地支持盲人。我还添加了一些 CSS 来制作 <button>看起来不像按钮。这取决于您希望它们看起来如何。

我将代码分解为将图像和文本设置为单个函数,并从其他函数调用它以减少重复的代码。我调用该函数一次,将原始图像和文本设置到页面中。

我将您的 prev 和 next 函数中的逻辑更改为更简单。

关于javascript - 在Javascript中将句子作为元素放入数组中,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47487776/

相关文章:

javascript - 使用compressor.js使用图像作为水印

javascript - 阴影未正确转换到导入的 OBJ 上

html - 具有不同 parent 的 Z-Index

c# - 如何使用 StringBuilder (ASP.NET C#) 修改标签 <tbody>?

javascript - 从对象数组传递某些参数

javascript - GSAP 重复延迟数组?

javascript - 使所有菜单项动画化

javascript - 在 SVG 路径的中间显示 SVG 图像

php - 启用所有选择选项直到 selectedIndex

javascript - 在 JavaScript 中将数组转换为对象