我有一個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,即使第二個顯示值正是我所測試的!
這確實是令人困惑,因爲我無法理解爲什麼當Boolean
測試返回假,這顯然是真值。
快速注:沒有理由永遠使用'布爾'。比較的結果已經是一個布爾類型。 –
是的,但在console.log中使用'Boolean'告訴我是真是假,它只是類型檢查,以確保它是if語句失敗,而不是我的代碼是一個滋擾。 – SkullDev
仍然不需要。無論如何,控制檯都會正確報告。如果不自己複製它是不可能的,但是有可能返回值的末尾有空白嗎?嘗試['value = style [1] .trim()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)。 –