【问题标题】:jQuery: about booleans in control structuresjQuery:关于控制结构中的布尔值
【发布时间】:2012-04-10 11:39:16
【问题描述】:

我有这个代码:

  console.log($(domElem).attr('selected'));

  console.log(typeof $(domElem).attr('selected'));

  if($(domElem).attr('selected') == true);
  {
      alert("there is one element selected");
  }

输出是:

false
boolean
false
boolean
false
boolean
...

我预计“这是一个选定的元素”从未显示过,但它显示的次数与项目存在的次数一样多。

jQuery 1.3.2

有什么想法吗?

哈维尔

【问题讨论】:

  • 那么,如果这总是==false,是正常的吗?
  • 尝试使用 ===,在这里阅读原因:stackoverflow.com/questions/359494/…
  • @neoascetic,我不明白你..
  • @limelights,我试过了,但问题是一样的,在这种情况下它对我来说就像 ==..
  • 你有一个 ;在条件之后......

标签: jquery boolean control-structure


【解决方案1】:

在条件后面加一个分号:

if($(domElem).attr('selected') == true);  
 {
       alert("there is one element selected");  
 } 

终止“if”语句,和你写的一样:

if($(domElem).attr('selected') == true){}; 
alert("there is one element selected");

改成:

if($(domElem).attr('selected') == true)
{
       alert("there is one element selected");
}

【讨论】:

    【解决方案2】:

    这是一个很难回答的问题,因为它有点不清楚您想要实现什么。

    如果只是检查是否选择了列表项,我会这样做:

    HTML(是的,我从 w3schools 上取下了它,抱歉!why this is bad):

    <select id="selectedLIST">
        <option value="volvo">Volvo</option>
        <option value="saab">Saab</option>
        <option value="mercedes">Mercedes</option>
        <option value="audi">Audi</option>
    </select> 
    

    jQuery

    var list = $('#selectedLIST');
    $(list).change(function(){
        $.each(list.children(), function(index, value){
            if($(value).attr('selected') === true){
                alert("there is one selected");
            }
        });
    });
    

    这将生成一个列表,当用户在列表中选择一个新元素时,将根据 HTML 标记上的“selected”属性生成一个弹出窗口,说“这是一个选定的”。

    此外,在 if 语句之后放置分号会“终止”该语句。

    忘记放分号也会强制 JS 引擎插入分号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 2015-06-24
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      相关资源
      最近更新 更多