Le caselle di controllo non controllerà in IE7 utilizzando Javascript, e tuttavia nessun errore

voti
1

Ok io sono totalmente confuso su questo.

Ho uno script che riceve un mazzo di valori da un oggetto JSON e crea un gruppo di caselle di controllo e sia i controlli o deseleziona una queste caselle sulla base dei loro valori.

Lo script funziona correttamente in IE8, Firefox3, ecc ... ecc ...

Però...

In IE7 lo script non riesce a spuntare le caselle di controllo. Esso mostra nessun errore e da quello che posso dire, lo script viene eseguito bene. Ho appena non controlla le caselle di controllo, e io non so perché ...

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()
                                                }
                        }                           
};

Funzione stockInit () {alert ( BEGIN: stockInit ()); // TODO: riceverete un on e l'opzione off, // Uno sarà avere un attributo selezionato di selezionato, // e l'altro avrà un attributo selezionato di // // l'opzione con l'attributo selezionato di // genererà una casella di controllo che non è controllato. // // L'opzione che ha il attributo selezionato di 'selezionato' // genererà una casella di controllo che viene controllato. //
// Perché? Si chiede ... perché questo è solo il modo in cui la cosa è // setup.

        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());
}

E per favore non chiedere perché sto facendo le cose in questo modo ... tutto quello che posso dire è che non ho accesso al codice backend ... in modo da ottenere ciò che ho ...

È pubblicato 26/06/2009 alle 15:17
fonte dall'utente
In altre lingue...                            


1 risposte

voti
13

Credo che questo è il tuo problema

fondamentalmente la soluzione è quella di fare in aggiunta questo:

optionInput.defaultChecked = selected;

oppure impostare il parametro controllato dopo aver inserito la casella nel DOM

Risposto il 26/06/2009 a 15:30
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more