As caixas de seleção não irão fazer o check-in do IE7 usando Javascript e, no entanto, nenhum erro
Ok, estou totalmente confuso com isso.
Eu tenho um script que recebe um monte de valores de um objeto JSON e cria um monte de caixas de seleção e verifica ou desmarca essas caixas de seleção com base em seus valores.
O script funciona corretamente no IE8, Firefox3, etc ... etc ...
Contudo...
No IE7, o script falha ao marcar as caixas de seleção. Ele não exibe erros e pelo que eu posso dizer, o script roda muito bem. Eu simplesmente não marquei nenhuma das caixas de seleção, e não sei porque ...
<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>
função stockInit () {alert ("BEGIN: stockInit ()"); // TODO: Você receberá uma opção "ativado" e "desativado", // Um terá um atributo "selecionado" de "selecionado", // e o outro terá um atributo "selecionado" de "" // // A opção que possui o atributo "selecionado" de "" // irá gerar uma caixa de seleção que não está marcada. // // A opção que tem o "atributo selecionado de" selected "// irá gerar uma caixa de seleção marcada. //
// Por quê? Você pergunta ... porque é assim que a coisa é // configuração. para (var item in shoppingCart) {// // console.log ("item de processamento:" + item);
<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>
E, por favor, não pergunte por que estou fazendo as coisas desse jeito ... tudo o que posso realmente dizer é que não tenho acesso ao código de backend ... então recebo o que recebo ...