[英]Setting a Form Input Value With IE9 (Getting An Error - Unable to set value of the property 'value': object is null or undefined)
[英]IE Error : Unable to set value of the property 'style': object is null or undefined
我無法為此使用JQuery,但找不到用於修復IE8代碼的方法。 它在所有其他瀏覽器中均能很好地工作(並且適用於IE9 +)。
這是橫幅旋轉器,它停止在該行工作以隱藏可見的橫幅。
var bannerRotation = setInterval(function () {
var img = document.querySelectorAll('#contentBannerRotator img');
var banner = document.querySelectorAll('#contentBannerRotator a[style="display: block;"]');
if (!banner || banner.length < 1)
var banner = document.querySelectorAll('#contentBannerRotator a[style="display:block;"]');
banner[0].style.display = "none"; /* This is where the error occurs */
var rand = Math.floor(Math.random() * img.length);
img[rand].parentNode.style.display = "block";
}, 30000);
似乎IE8找不到與查詢選擇器匹配的內容。
編輯:該文檔不會在Quirks模式下進行,因此querySelectorAll
方法應該可以正常工作。
您可以嘗試檢測元素是否存在:
if(typeof banner[0] != 'undefined') {
banner[0].style.display = "none"; /* This is where the error occurs */
}
更新:
也看過請讀這個
你if
身體基本什么也不做,是一個錯字?
var banner = document.querySelectorAll('#contentBannerRotator a[style="display: block;"]');
if (!banner || banner.length < 1)
var banner = document.querySelectorAll('#contentBannerRotator a[style="display:block;"]');
// the exact same selector again? ^
您正在使用相同的選擇器,而您似乎想回退到保證存在的另一個元素。 因此,修復選擇器,然后修復該錯誤。
IE8不完全支持querySelector
和querySelectorAll
,因此它對我的查詢的響應不規則。
我為IE8創建了一個獨立循環。 僅在banner[0]
元素/對象中未找到任何內容或未定義循環時,才執行循環。
IE8具有用於子節點的特定數組結構,以及all
數組。
的JavaScript
var bannerRotation = setInterval(function () {
var img = document.querySelectorAll('#contentBannerRotator img');
var bannerContainer = document.querySelector('#contentBannerRotator');
var banner = document.querySelectorAll('#contentBannerRotator a[style="display: block;"]');
if (!banner[0] || banner.length < 1) {
/* Fix for IE8 */
for (var i = 0; i < bannerContainer.childNodes[0].all.length; i++) {
if (bannerContainer.childNodes[0].all[i].nodeName == "A") {
if (bannerContainer.childNodes[0].all[i].style.display == "block") {
bannerContainer.childNodes[0].all[i].style.display = "none";
break;
}
}
}
} else {
banner[0].style.display = "none";
}
var rand = Math.floor(Math.random() * img.length);
img[rand].parentNode.style.display = "block";
}, 30000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.