RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 945551
Accepted
Чайник
Чайник
Asked:2020-02-16 21:47:36 +0000 UTC2020-02-16 21:47:36 +0000 UTC 2020-02-16 21:47:36 +0000 UTC

为什么我没有在 JS 循环中获取所有属性 [关闭]

  • 772
关闭 这个问题是题外话。目前不接受回复。

该问题是由不再复制的问题或错字引起的。虽然类似问题可能与本网站相关,但该问题的解决方案不太可能帮助未来的访问者。通常可以通过在发布问题之前编写和研究一个最小程序来重现问题来避免此类问题。

3年前关闭。

改进问题

我使用 forEach 或 FOR 循环遍历元素集合,由于某种原因,它仅显示第一个元素的属性值,其余为 null,尽管元素本身正常显示

var sliders = document.querySelectorAll('.slide');
var count = 0;
console.log(count);
document.querySelector('.next').onclick = function() {
  count++;
  sliders.forEach(function(i) {
    console.log(i.getAttribute('num'));
  });
};
<div class="next">Click me</div>
<div class="slide" num="0"></div>
<div class="slide" num="1"></div>
<div class="slide" num="2"></div>

javascript
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Ruslan Semenov
    2020-02-16T22:10:34Z2020-02-16T22:10:34Z

    在这里它被纠正了,但你为什么需要 cout?

    var sliders = document.querySelectorAll('.slide');
    var count = 0;
    
    function fn_count() {
      count++;
      sliders.forEach(function(i) {
        console.log(i.getAttribute('num'));
      });
    };
    .next {
      cursor: pointer;
      text-align: center;
      border: 1px solid black;
      padding: 1em;
    }
    <div class="next" onclick="fn_count()">click</div>
    <div class="slide" num="0"></div>
    <div class="slide" num="1"></div>
    <div class="slide" num="2"></div>

    • 0
  2. Best Answer
    Air
    2020-02-18T14:41:58Z2020-02-18T14:41:58Z

    这是一个很好的例子,请阅读评论

    var gnext = document.getElementById('nextPicture');
    var gprev = document.getElementById("prevPicture");
    var elem = document.getElementsByTagName('li');
    
    // первому элементу сразу задаем класс, чтобы он был виден
    elem[0].classList.add('visible');
    
    let count = 0;
    
    function _count(direction) { // direction - это аргумент который определяет 
      // направления 
      // если нажимается кнопка следующий next 
      if (direction === '_next') {
        // и count равен длине массива elem-li (- 1)
        if (count == elem.length - 1)
          // count обнуляем
          count = 0;
        else
          // если count не равен длине массива elem-li (- 1)
          count++;
    
        // а тут проверяем обратное действие
      } else if (direction === '_prev') {
        if (count == 0)
          count = elem.length - 1;
        else
          count--;
      }
    
      // А вот тут уже цикл
      for (let i = 0; i < elem.length; i++) {
        // Чтобы у всех elem удалить класс visible
        elem[i].classList.remove('visible');
      }
      // А тут добавляем класс visible elem с нужным индексом 
      elem[count].classList.add('visible');
    }
    
    // ну а тут запускаем _count(direction) 
    gnext.addEventListener('click', function() {
      // задавая направления  
      _count('_next');
    })
    
    gprev.addEventListener('click', function() {
      _count('_prev');
    })
    ul {
      position: relative;
    }
    
    li {
      opacity: 0;
      position: absolute;
    }
    
    .visible {
      opacity: 1;
    }
    <div class="slider">
      <button id="prevPicture">Prev</button>
      <button id="nextPicture"> Next</button>
      <ul>
        <li><img src="http://via.placeholder.com/250x250/33ff99/555555?text=Slid1"></li>
        <li><img src="http://via.placeholder.com/250x250/33ff99/555555?text=Slid2"></li>
        <li><img src="http://via.placeholder.com/250x250/33ff99/555555?text=Slid3"></li>
        <li><img src="http://via.placeholder.com/250x250/33ff99/555555?text=Slid4"></li>
        <li><img src="http://via.placeholder.com/250x250/33ff99/555555?text=Slid5"></li>
        <li><img src="http://via.placeholder.com/250x250/33ff99/555555?text=Slid6"></li>
      </ul>
    </div>

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5