Pola wyboru nie będą sprawdzać w IE7 za pomocą Javascript, a mimo to nie będzie błędów
W porządku, jestem całkowicie zdezorientowany tym.
Mam skrypt, który odbiera wiązkę wartości z obiektu JSON i tworzy wiązkę pól wyboru oraz zaznacza lub odznacza te pola wyboru na podstawie ich wartości.
Skrypt działa poprawnie w IE8, Firefox3, itd ... itd ...
Jednak...
W IE7 skrypt nie sprawdza pól wyboru. Nie wyświetla żadnych błędów iz tego, co mogę powiedzieć, skrypt działa dobrze. Po prostu nie zaznaczam żadnych pól wyboru i nie wiem dlaczego ...
<code>shoppingCart['Update_Stock_Item_0_NRD%5FHAT2'] = { 'propeller': { 'label' : 'propeller', 'optionValues' : { 'on' : { 'selected': 'selected' }, 'off' : { 'selected': '' }, '' : new String() } }, 'sunLogo': { 'label' : 'sunLogo', 'optionValues' : { 'on' : { 'selected': 'selected' }, 'off' : { 'selected': '' }, '' : new String() } }, 'MSLogo': { 'label' : 'sunLogo', 'optionValues' : { 'on' : { 'selected': 'selected' }, 'off' : { 'selected': '' }, '' : new String() } } }; </code>
function stockInit () {alert ("BEGIN: stockInit ()"); // TODO: Otrzymasz opcję „on” i „off”, // Jeden będzie miał „wybrany” atrybut „selected”, //, a drugi będzie miał „wybrany” atrybut „” // // Opcja, która ma „wybrany” atrybut „” //, wygeneruje pole wyboru, które nie jest zaznaczone. // // Opcja, która ma zaznaczony „wybrany atrybut” „// wygeneruje zaznaczone pole wyboru. //
// Czemu? Pytasz ... ponieważ tak właśnie jest. for (var item in shoppingCart) {// // console.log ("element przetwarzania:" + element);
<code> var optionContainer = document.getElementById(item + "_optionContainer"); for(var option in shoppingCart[item]) { if(option != "blank") { // // console.log("option: " + option); var currentOption = shoppingCart[item][option]['optionValues']; // // console.log("currentOption['on']['selected']: " + currentOption['on']['selected']); // // console.log("currentOption['off']['selected']: " + currentOption['off']['selected']); // Really you only have to check the one, but just to be through-o var selected = (currentOption['on']['selected'] == 'selected') ? true : false; selected = (currentOption['off']['selected'] == 'selected') ? false : true; var label = document.createElement("LABEL"); var labelText = document.createTextNode(shoppingCart[item][option]['label']); var optionInput = document.createElement("INPUT"); var hiddenInput = document.createElement("INPUT"); optionInput.setAttribute("type", "checkbox"); optionInput.checked = selected; optionInput.setAttribute("id", option); alert(optionInput.id); alert(optionInput.checked); hiddenInput.setAttribute("type", "hidden"); hiddenInput.setAttribute("name", option); hiddenInput.setAttribute("id", option + "_hiddenValue"); hiddenInput.setAttribute("value", (optionInput.checked) ? "on" : "off"); label.appendChild(optionInput); label.appendChild(labelText); label.appendChild(hiddenInput); (function(id) { optionInput.onclick = function() { var hiddenInput = document.getElementById(id + "_hiddenValue"); hiddenInput.setAttribute("value", (this.checked == true) ? "on" : "off"); alert("this.id: " + this.id); alert("this.checked: " + this.checked); } })(optionInput.id); optionContainer.appendChild(label); } } // // console.log("processing item of " + item + " complete"); } alert("END: stockInit()"); } </code>
I proszę nie pytaj, dlaczego robię rzeczy w ten sposób ... wszystko, co mogę ci powiedzieć, to to, że nie mam dostępu do kodu zaplecza ... więc dostaję to, co dostaję ...