[英]Javascript Object.innerHtml is not substituting the whole string parameter provided
[英]Javascript (object.innerhtml) is not compatible with IE
我創建了一個腳本,該腳本可以根據所選類別更改組合框。 問題是該腳本可用於Internet Explorer(版本7+)以外的所有其他瀏覽器。 我沒有收到錯誤消息,表明IE不喜歡object.innerhtml。 我該怎么解決?
工作示例: http : //adcabinetsales.com/style-chooser.html
function ChangeCabinetCollection() {
if (document.getElementById("cabinet_collection").value == "broughton") {
// COPY VALUES
var first = document.getElementById('broughton_styles');
var options = first.innerHTML;
var second = document.getElementById('cabinet_selector');
// REPLACE VALUES
second.innerHTML = options;
// CHANGE CABINET IMAGE TO BE IN THE COLLECTION OF CHOICE
changeDoor("cabinet_selector");
} else if (document.getElementById("cabinet_collection").value == "specialty") {
// COPY VALUES
var first = document.getElementById('cabinet_style');
var options = first.innerHTML;
var second = document.getElementById('cabinet_selector');
// REPLACE VALUES
second.innerHTML = options;
// CHANGE CABINET IMAGE TO BE IN THE COLLECTION OF CHOICE
changeDoor("cabinet_selector");
}
}
function ChangeGraniteCollection() {
if (document.getElementById("granite_collection").value == "new_arrivals") {
// COPY VALUES
var first = document.getElementById('granite_new');
var options = first.innerHTML;
var second = document.getElementById('granite_selector');
// REPLACE VALUES
second.innerHTML = options;
// CHANGE CABINET IMAGE TO BE IN THE COLLECTION OF CHOICE
changeGranite("granite_selector");
} else if (document.getElementById("granite_collection").value == "Specialty Styles") {
// COPY VALUES
var first = document.getElementById('specialty_granite_styles');
var options = first.innerHTML;
var second = document.getElementById('granite_selector');
// REPLACE VALUES
second.innerHTML = options;
// CHANGE CABINET IMAGE TO BE IN THE COLLECTION OF CHOICE
changeGranite("granite_selector");
}
}
通常不是.innerHTML
;它不是.innerHTML
。 它與<select>
元素一起使用會導致問題。 有兩種方法可以解決此問題。 一種簡單的方法是替換整個<select>
元素以及選項列表。 也就是說,如果您的HTML如下所示:
<select name=whatever id=whatever>
<option value=1>Hello
<option value=2>World
</select>
然后,您可以將其更改為:
<span class=select-wrapper>
<select name=whatever id=whatever>
<option value=1>Hello
<option value=2>World
</select>
</span>
然后只需將<span>
包裝器的.innerHTML
替換為<select>
。
解決該問題的另一種方法是建立一個Option實例數組,並更新<select>
元素的“ options”屬性。
我不確定為什么您會遇到IE7 +的問題,我沒有要測試的Microsoft產品,但是可能存在以下錯誤:
BUG:Internet Explorer無法設置選擇對象的innerHTML屬性
但是,使用@Pointy答案,則可以使用Node.cloneNode
Node.replaceChild
像這樣執行select的替換,而不是包裝元素。 我相信這是跨瀏覽器。
的HTML
<select name="granite_collection" id="granite_collection">
<option selected="selected">Choose a Collection</option>
<option value="new_arrivals">Granite: New Arrivals</option>
<option value="Specialty Styles">Granite: Specialty Styles</option>
</select>
<select name="granite_selector" id="granite_selector"></select>
<select name="cabinet_style" id="cabinet_style" style="visibility:hidden;">
<option value="images/doorstyles/Brandy wine.jpg">Brandy Wine</option>
<option value="images/doorstyles/Canvas.jpg">Canvas</option>
<option value="images/doorstyles/Country Linen.jpg">Country Linen</option>
<option value="images/doorstyles/Expresso.jpg">Expresso</option>
<option value="images/doorstyles/Mocha glazed.jpg">Mocha Glazed</option>
<option value="images/doorstyles/Shaker.jpg">Shaker</option>
<option value="images/doorstyles/Tahoe.jpg">Tahoe</option>
<option value="images/doorstyles/Charleston Antique White.jpg">Charleston Antique White</option>
<option value="images/doorstyles/Charleston Cherry.jpg">Charleston Cherry</option>
<option value="images/doorstyles/Charleston Saddle.jpg">Charleston Saddle</option>
<option value="images/doorstyles/Java Shaker.jpg">Java Shaker</option>
<option value="images/doorstyles/Savannah Toffee.jpg">Savannah Toffee</option>
<option value="images/doorstyles/White Shaker.jpg">White Shaker</option>
<option value="images/doorstyles/York Chocolate.jpg">York Chocolate</option>
<option value="images/doorstyles/York Antique White.jpg">York Antique White</option>
<option value="images/doorstyles/Dillon1.jpg">Dillon1</option>
<option value="images/doorstyles/Dillon2.jpg">Dillon2</option>
</select>
Java腳本
var graniteCollection = document.getElementById("granite_collection"),
graniteSelector = document.getElementById("granite_selector"),
cabinetStyle = document.getElementById("cabinet_style");
graniteCollection.onchange = function () {
var clone = cabinetStyle.cloneNode(true);
clone.id = graniteSelector.id;
clone.name = graniteSelector.name;
clone.style.visibility = "";
graniteSelector.parentNode.replaceChild(clone, graniteSelector);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.