【问题标题】:Get a specific text value of an element when there is multiple elements with the same class names and attribute names当有多个具有相同类名和属性名的元素时,获取一个元素的特定文本值
【发布时间】:2019-09-14 19:29:14
【问题描述】:
<div class="my-attributes">
                <div class="row">
                    <div class="SameClass"><strong>Condition</strong></div>
                    <div class="SameClass-value" itemprop="condition">New</div>
                </div>
                <div class="row">
                    <div class="SameClass"><strong>Color</strong></div>
                    <div class="SameClass-value" itemprop="color">Black</div>
                </div>

            <div class="row">
                <div class="SameClass"><strong>Availability</strong></div>
                <div class="SameClass-value" itemprop="avail">In Stock</div>
            </div>

                <div class="row">
                    <div class="SameClass"><strong>Quantity</strong></div>
                    **<div class="SameClass-value" itemprop="qty"> 5 </div>**
                </div>

                <div class="row">
                    <div class="SameClass"><strong>Price</strong></div>
                    <div class="SameClass-value" itemprop="price">250</div>
            </div>

我有多个具有相同类和“itemprop”属性的 div,我需要能够创建一个返回数量的函数(在上面的示例中为“5”)

这里的问题是您在上面看到的结构在其他页面中发生了变化。在上面的示例中,条件和颜色显示,但在其他页面上没有出现,这意味着除了类名和“itemprop”的属性值之外,结构发生了变化。见下文:

<div class="my-attributes">
            <div class="row">
                <div class="SameClass"><strong>Availability</strong></div>
                <div class="SameClass-value" itemprop="avail">In Stock</div>
            </div>

                <div class="row">
                    <div class="SameClass"><strong>Quantity</strong></div>
                    **<div class="SameClass-value" itemprop="qty"> 5 </div>**
                </div>

                <div class="row">
                    <div class="SameClass"><strong>Price</strong></div>
                    <div class="SameClass-value" itemprop="price">250</div>
            </div>

如何将 Quantity 放入 JavaScript 函数并返回 5 的值?无需编辑网站本身的代码?

我一直在玩这个,但我确信这是完全不正确的。

function () {
  var x = document.getElementsByClassName("SameClass").getAttribute("itemprop"); 
  if (x = 'price')
  {
  var a = document.getElementsByClassName("SameClass").getAttribute("itemprop").innerText;
  return a;
  }
}

【问题讨论】:

  • document.getElementsByClassName() 将返回一个数组。因此,当您想要检查其中的元素时,您需要使用 .each() 逐步检查它们,或者使用其后面的 [n] 符号来处理单个元素。

标签: javascript function if-statement return getelementsbyclassname


【解决方案1】:

以下可能对您有用:

function getQty() { 
  var arr=document.getElementsByClassName("SameClass-value");
  for(var i=0;i<arr.length;i++)
   if (arr[i].getAttribute("itemprop") == 'qty') return arr[i].innerHTML;
}

或者,甚至更短,你可以这样做

function getQty() { 
  return document.getElementsByClassName("SameClass-value")
  .find(d=>d.getAttribute("itemprop") == 'qty').innerHTML;
}

抱歉重复编辑。今天对我来说是漫长的一天,我试图在我的小智能手机上快速拼凑一些东西。

【讨论】:

  • “我如何获得数量”
  • 在上述函数中用 'qty' 代替 'price'。
  • @ChristopherTaleck - 是的,但不是他们要求的。除此之外,SameClass 不包含该值。
  • 当然,是的!我刚刚将price 替换为qty,将sameClass 替换为sameClass-value
  • 这个和上面的都有效 谢谢大家!我是菜鸟,谢谢大家。您是否有任何链接或在线课程,您知道我可以研究一下以了解更多关于这样的 JavaScript 编码的信息?再次感谢!!
【解决方案2】:

如果类没有改变,您可以选择所有相关元素,然后从您需要的元素中获取值。

function getQty() {
  var qty;
  document.querySelectorAll("div.SameClass-value").forEach(function(element) {
    if (element.getAttribute("itemprop") === "qty") {
      qty = element.innerText;
    }
  });
  return qty;
}

console.log(getQty());
<div class="my-attributes">
  <div class="row">
    <div class="SameClass"><strong>Condition</strong></div>
    <div class="SameClass-value" itemprop="condition">New</div>
  </div>
  <div class="row">
    <div class="SameClass"><strong>Color</strong></div>
    <div class="SameClass-value" itemprop="color">Black</div>
  </div>

  <div class="row">
    <div class="SameClass"><strong>Availability</strong></div>
    <div class="SameClass-value" itemprop="avail">In Stock</div>
  </div>

  <div class="row">
    <div class="SameClass"><strong>Quantity</strong></div>
    <div class="SameClass-value" itemprop="qty"> 5 </div>
  </div>

  <div class="row">
    <div class="SameClass"><strong>Price</strong></div>
    <div class="SameClass-value" itemprop="price">250</div>
  </div>
</div>

【讨论】:

  • 非常感谢!那个有效。你太棒了。你知道我可以参加的任何在线课程吗?我肯定在寻找可以学习的东西来提高我的技能。谢谢!
  • @cars10m - 哈哈 :)
  • @datalayernoob - 不幸的是我没有建议。但你绝对可以在这里学到很多东西。在这里和谷歌是我学习的地方。
猜你喜欢
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多