【问题标题】:How to detect which element in a class has a certain style如何检测类中的哪个元素具有某种样式
【发布时间】:2012-12-22 22:55:23
【问题描述】:

我有一系列共享一个班级的select 列表。它们都在彼此之上,一个有display: inline,而其他的有display: none。我如何使用纯 JavaScript(没有 jQuery)来查找正在显示的列表并检索其 value

我在想这样的事情:

function retrieve() {
  var value
  elements = document.getElementsByClassName('class');
  for (var i = 0; i < elements.length; i++) {
    if(elements[i].style.display = 'inline') {
      value = elements[i].value;
      break;
    }
  }
  alert(value);
}

但警报显示“未定义”。代码有什么问题?

【问题讨论】:

    标签: javascript dom if-statement for-loop styles


    【解决方案1】:

    这一行:

    if(elements[i].style.display = 'inline') {
    

    应该是

    if(elements[i].style.display === 'inline') {
    // change here --------------^
    

    对于单个=,这是一个分配,而不是比较。使用 ===,这是一个 (strict) 比较。你也可以使用==loose comparison)。

    【讨论】:

    • 谢谢!严格/松散比较有什么区别?
    • @Ian:在一个松散的比较中,"0" == 0true。严格比较,"0" === 0false。例如,松散的比较会进行类型转换,而严格的比较不会。如果(在这种情况下)您知道操作数的类型,则没有区别,但如果您不确定它们的类型(在这种情况下,通常最好有意将它们转换为您知道和使用的东西) ===;隐式类型转换规则相当复杂)。添加了链接。
    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2012-12-02
    相关资源
    最近更新 更多