2016-01-18 106 views
0

我有一個javascript函數從樣式屬性中獲取屬性。如果語句在應該爲true時返回false

然後我檢查屬性是否等於一個特定的點。

但是,當我的屬性值爲console.log()時,它如預期的那樣,但是當我測試屬性值時,它返回false?

這裏是我的代碼和截圖:

var $paywhirlWidget = $(".payment-signup-section .container .row .col-xs-12:first-child iframe#paywhirl_frame"), 
     $widgetRow = $(".payment-signup-section .container .row .col-xs-12:first-child"); 

$.fn.inlineStyle = function (prop) { 
    var styles = this.attr("style"), 
     value; 

    styles && styles.split(";").forEach(function (e) { 
     var style = e.split(":"); 
     if ($.trim(style[0]) === prop) { 
      value = style[1]; 
     } 
    }); 
    return value; 
}; 


function checkForChanges() { 
    if ($(window).width() < 998) { 
     console.log(Boolean($paywhirlWidget.inlineStyle("height").toLowerCase() == "620px")); 
     console.log($paywhirlWidget.inlineStyle("height").toLowerCase()); 
     if ($paywhirlWidget.inlineStyle("height").toLowerCase() == "620px") { 
      console.log("im here!!"); 
      $widgetRow.css("display", "none"); 
     } 
    } else { 
     if ($paywhirlWidget.inlineStyle("height") == "300px") { 
      console.warn("im here too!!"); 
      $widgetRow.css("display", "none"); 
     } 
    } 
} 

setInterval(checkForChanges, 500); 

作爲一個例子,這裏是「620px」測試,你可以看到,第一console.log()返回false,即使第二個顯示值正是我所測試的!

error

這確實是令人困惑,因爲我無法理解爲什麼當Boolean測試返回假,這顯然是真值。

+0

快速注:沒有理由永遠使用'布爾'。比較的結果已經是一個布爾類型。 –

+0

是的,但在console.log中使用'Boolean'告訴我是真是假,它只是類型檢查,以確保它是if語句失敗,而不是我的代碼是一個滋擾。 – SkullDev

+0

仍然不需要。無論如何,控制檯都會正確報告。如果不自己複製它是不可能的,但是有可能返回值的末尾有空白嗎?嘗試['value = style [1] .trim()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)。 –

回答

2

看起來你的樣式屬性在值的開始處有一個空格。嘗試使用trim

$.trim($paywhirlWidget.inlineStyle("height").toLowerCase()) === "620px" 

,或者使得它修剪更新inlineStyle插件:

value = $.trim(style[1]); 
2

簡單,只需使用jQuery的height()它返回一個代表像素數

if ($paywhirlWidget.height() == 620) 
相關問題