【问题标题】:alert not showing getElementbyId in javascript警报未在 javascript 中显示 getElementbyId
【发布时间】:2011-05-27 14:10:16
【问题描述】:
function showPrice(){ 

    var a = document.getElementById("product_container15");

    if (a == "$1,599.00"){
        alert(a);
    }
    else {
        alert("$1,499.00");
    }
}

这始终返回 1,499.00 美元。我知道我做错了,或者也许有一种完全不同的方式来写这个。如果 id 是“product_container15”,我希望警报显示 $1,599.00。如果不是,则警报将显示 $1,499.00。有人可以告诉我这是怎么做到的吗?谢谢!

【问题讨论】:

    标签: javascript getelementbyid alerts


    【解决方案1】:

    在您的情况下,a 是 html 对象,因此它永远不会是“$1,599.00”也许您应该像这样尝试

    function showPrice(){ 
    
    var a = document.getElementById("product_container15").value;
    
    if (a == "$1,599.00"){
    alert(a);
    }
    else {
    alert("$1,499.00");
    }
    }
    

    【讨论】:

      【解决方案2】:

      a 是一个元素 - 你想要内容吗?

      如果这是 HTML 标记,请尝试 textContent 或(对于 IE innerText):

      alert(a.textContent);
      

      或等效的(用于文本节点)nodeValue

      alert(a.nodeValue);
      

      如果a 是表单元素(inputtextarea 等...),请使用value 属性:

      alert(a.value);
      

      【讨论】:

      • .innerText 不是跨浏览器安全的,是吗?
      • @Shane:不是,不是。那么应该是a.textContent || a.innerText
      • @ShaneBlake, @Felix - 感谢您的 cmets。答案已更新。
      • @Oded:我不认为textContent 在 IE 中工作;)请参阅:quirksmode.org/dom/w3c_html.html#t07
      • @Felix - 谢谢。 @ShaneBlake - 是的,所有这些痛苦都会消失(给我val() 任何一天)。
      【解决方案3】:

      这是因为a 包含Element。要获取该元素的html,请执行a.innerHtmla.innerText

      var a = document.getElementById("product_container15").innerText;
      
      if (a == "$1,599.00"){
          alert(a);
      }
      else {
          alert("$1,499.00");
      }
      

      【讨论】:

      • 谢谢。 id 在

        标记内。

        标签中的文本包含价格。

      【解决方案4】:

      我认为 Senad 和 Mohamed 都是正确的,但他们都假设 2 个不同的事情。 Sena 假设 product_container15 是一个输入,而 Mohamed 假设它是一个容器元素,如 ""。

      所以,如果 product_container15 是一个“输入”元素,那么只值我的 2 美分:

      var a = document.getElementById("product_container15").value;
      
      if (a == "$1,599.00"){
      alert(a);
      }
      else {
      alert("$1,499.00");
      }
      }
      

      如果是 div、span 或任何其他元素,则:

      var a = document.getElementById("product_container15").innerText;
      
      if (a == "$1,599.00"){
          alert(a);
      }
      else {
          alert("$1,499.00");
      }
      

      【讨论】:

      • 我无法输入所有代码,因为文本太多。我必须等五分钟才能输入更多。这里是第一个 div…………

        1980 Jeep Laredo
        (颜色:月银)
        4-门

        $1,599.00

      • 我尝试修改函数}function showPrice(){ var a = document.getElementById("1599").innerHTML; var b = document.getElementById("1499").innerHTML; if (a == "$1,599.00"){ alert(a); } else { alert(b); } }
      • @Oded,pedrodg,谢谢! - 这里有更多 html <div class="grid_4" id="product_container"> <a href="images/03_md.jpg"><img src="images/03_sm.jpg" width="100" height="100" class="small"/></a> <p class="text"> 1980 Ford Pinto (Color: White) <br />2-door</p> <p class="price" id="1499">$1,499.00</p> <p id="viewButton"><input type="button" value="View More" onclick=""/></p> </div>
      • 我刚刚提供的任何代码有帮助吗?感谢您帮助我学习。
      • @Mick,尝试使用jsfiddle.net 来放置您的示例代码。我已经提出了一个版本,对您的代码进行了一些细微的修改,在那里我检查对象是否为空并且它似乎工作......jsfiddle.net/pedrito/syWCd
      猜你喜欢
      • 1970-01-01
      • 2014-02-21
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      相关资源
      最近更新 更多