javascript - 使用 Javascript 根据 <li class = 'bu' > 的数据值构建数组

标签 javascript html

从不成功构建数据值数组

我有很多这样的列表

<ul>
<li class="bu" data-value="apple">Apple</li>
<li class="bu" data-value="banana">Banana</li>
<li class="bu" data-value="mango">Mango</li>
</ul>

文档加载后,我尝试使用 javascript 从所有带有 bu 类的列表中获取数据值来构建数组

var br = document.getElementsByClassName("bu");
for (var i = 0; i < br.length; i++) {
 fruit[i] = this.getAttribute('data-value');}

然后我尝试输出,但没有成功..

alert(fruit);
document.write(fruit);

我想构建这样的数组:

var fruit = ["apple", "banana", "mango"];
fruit[1] = "banana"

javascript一定有错误,但我的水平还找不到错误..

我想使用纯 JavaScript,而不使用 Jquery。

最佳答案

this 并不是指在 for 循环内迭代的项目。虽然你可以通过这样做来修复它

fruit[i] = br[i].getAttribute('data-value');
// use push instead if the fruit array is initially empty

您还可以考虑使用Array.from功能性地构造数组:

const fruitArray = Array.from(
  document.getElementsByClassName("bu"), // collection to create the array from
  bu => bu.getAttribute('data-value') // mapper function
);

const fruitArray = Array.from(
  document.getElementsByClassName("bu"), // collection to create the array from
  bu => bu.getAttribute('data-value') // mapper function
);
console.log(fruitArray);
<ul>
  <li class="bu" data-value="apple">Apple</li>
  <li class="bu" data-value="banana">Banana</li>
  <li class="bu" data-value="mango">Mango</li>
</ul>

.dataset一般在IE11及以后的浏览器上支持,其语法比getAttribute好一点,所以如果你不需要支持古老的浏览器,考虑使用它来代替:

const fruitArray = Array.from(
  document.getElementsByClassName("bu"),
  bu => bu.dataset.value
);

关于javascript - 使用 Javascript 根据 <li class = 'bu' > 的数据值构建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53893412/

相关文章:

javascript - 如何使用 CSS 掩盖文本与重叠元素的可见性

javascript - hapi joi 过滤器有效值

javascript - $http 调用似乎产生无限 $digest 循环

javascript - 如何获取具有相同类名的span元素名称

javascript - jQuery 获取 Sibillings 第一个 child 的名称属性

html - 阻止文本跨越整个滚动条

javascript - 通过单击 IFrame(内联框架)中的项目,我需要路由到特定的 URL

javascript - 使用 .attr() 方法的 JavaScript switch 语句的行为

javascript - HTML5音频Javascript循环,但是

javascript - 单击图像添加文本框