html 访问特定位置并获取其值

slsn1g29  于 2023-11-15  发布在  其他
关注(0)|答案(1)|浏览(139)

我有3张卡,我想把各自的标题,图像等每张卡。
如何访问对象的每个位置并设置卡上的值。
我试着比较id,但它不会总是相同的id。所以我怎么才能实现这一点,我感谢你的帮助。

  1. <div class="row">
  2. <div class="column">
  3. <div class="card">
  4. <h3 id="title">Card 1</h3>
  5. <p>Some text</p>
  6. <p>Some text</p>
  7. </div>
  8. </div>
  9. <div class="column">
  10. <div class="card">
  11. <h3>Card 2</h3>
  12. <p>Some text</p>
  13. <p>Some text</p>
  14. </div>
  15. </div>
  16. <div class="column">
  17. <div class="card">
  18. <h3>Card 3</h3>
  19. <p>Some text</p>
  20. <p>Some text</p>
  21. </div>
  22. </div>
  23. </div>
  24. <script>
  25. const jsonArr = '[{"product_id": 1,"product_name": "Product 1","product_image": "product1.jpg","product_price": 19.99},{"product_id": 2,"product_name": "Product 2","product_image": "product2.jpg","product_price": 24.99},{"product_id": 3,"product_name": "Product 3","product_image": "product3.jpg","product_price": 29.99}]';
  26. const data = JSON.parse(jsonArr);
  27. for (var i = 0; i < data.length; i++) {
  28. if (data[i].product_id === 1) {
  29. document.getElementById("title").innerHTML = data[i].product_name;
  30. }
  31. }
  32. console.log(data);
  33. </script>

字符串

iklwldmw

iklwldmw1#

你得到了它的要点的权利,然而,你没有办法瞄准其他卡,一旦你处理了第一个。
实现这一点的一种方法是使用getElementsByClassName,它将返回一个html元素数组,其中包含给定类的每个元素:

  1. const cardElements = document.getElementsByClassName("card");

字符串
现在,有了这些,你可以使用你的循环,并使用我们刚刚创建的cardElements变量和item函数,将“cardElement”定位在索引i处。

  1. const cardElements = document.getElementsByClassName("card");
  2. for (var i = 0; i < data.length; i++) {
  3. const currentCardElement = cardElements.item(i);
  4. /** code that define the title and all... **/
  5. }


现在,要定位currentCardElement“内部”的元素,可以使用getElementsByClassName函数来定位card元素的子节点。
当在HTMLElement上调用这个函数时,该函数将只返回父HTMLElement的子树中匹配的HTMLElement,即我们调用该函数的那个。
这意味着,即使我们有多张带有<h3 class="title">的卡,也只会返回currentCardElement下面的h3
为每个包含数据的div设置一个不同的类可能会很有用,这样每次调用只有一个元素。

  1. <div class="column">
  2. <div class="card">
  3. <h3 class="title">Card 2</h3>
  4. <p class="image">Some text</p>
  5. <p class="price">Some text</p>
  6. </div>
  7. </div>
  1. const cardElements = document.getElementsByClassName("card");
  2. for (var i = 0; i < data.length; i++) {
  3. const currentCardElement = cardElements.item(i);
  4. const cardTitle = currentCardElement.getElementsByClassName("title").item(0);
  5. cardTitle.innerHTML = data[i].product_name
  6. /** We do the same for the image and price using the correct class name */
  7. }

的字符串
现在,您应该已经将data阵列中的相应产品填充到每张卡中。
下面你会看到一个完整的例子。

  1. const jsonArr = '[{"product_id": 1,"product_name": "Product 1","product_image": "product1.jpg","product_price": 19.99},{"product_id": 2,"product_name": "Product 2","product_image": "product2.jpg","product_price": 24.99},{"product_id": 3,"product_name": "Product 3","product_image": "product3.jpg","product_price": 29.99}]';
  2. const data = JSON.parse(jsonArr);
  3. const cardElements = document.getElementsByClassName("card");
  4. for (var i = 0; i < data.length; i++) {
  5. const currentCardElement = cardElements.item(i);
  6. const cardTitle = currentCardElement.getElementsByClassName("title").item(0);
  7. cardTitle.innerHTML = data[i].product_name;
  8. const cardImage = currentCardElement.getElementsByClassName("image").item(0);
  9. cardImage.innerHTML = data[i].product_image;
  10. const cardPrice = currentCardElement.getElementsByClassName("price").item(0);
  11. cardPrice.innerHTML = data[i].product_price;
  12. }
  1. <div class="row">
  2. <div class="column">
  3. <div class="card">
  4. <h3 class="title">Card 1</h3>
  5. <p class="image">Some text</p>
  6. <p class="price">Some text</p>
  7. </div>
  8. </div>
  9. <div class="column">
  10. <div class="card">
  11. <h3 class="title">Card 2</h3>
  12. <p class="image">Some text</p>
  13. <p class="price">Some text</p>
  14. </div>
  15. </div>
  16. <div class="column">
  17. <div class="card">
  18. <h3 class="title">Card 3</h3>
  19. <p class="image">Some text</p>
  20. <p class="price">Some text</p>
  21. </div>
  22. </div>
  23. </div>

P.S.你应该考虑使用querySelectorquerySelectorAll函数,它们更容易使用,因为它们使用css选择器来定位元素。

展开查看全部

相关问题