我有一个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)。 –