Erro em Tempo de execuçãono IE

7 respostas
R

Olá a todos do forum!

bom estou com um probleminha de script em um site de um amigo!

o codigo é esse:

<script type="text/javascript">

var price = <?php echo $_product->getFinalPrice();?>;

function getPriceJSON(cc){
    
    //building the table
    var xhConn = new XHConn();
    xhConn.connect("/loja/orcamento.php", "POST", "cc="+cc+"&val="+price,
			function(xh) {
                            
                            var response = xh.responseText.parseJSON();
                            
                            var innerHTML = '<tr class="Grid_Header"><td width="33%">Parcelas</td><td width="33%">Valor da Parcela</td><td width="33%">Valor Total</td></tr>';
                            
                            for(var i = 0; i < response.items.length;i++){
                                
                                innerHTML += '<tr class="Grid_Header"><td style="color: Red;">'+response.items[i].parcelas+' x</td><td style="color: Red;">R$ '+response.items[i].valorParcela+'</td><td style="color: Green;">R$ '+response.items[i].valorTotal+'</td></tr>';
                                
                            }
                            
                            $('CreditCardTable').innerHTML = innerHTML;
                            
			}
			);
    

}

</script>

o que ele faz? bom é um site de vendas utilizando o sistema magento! foi feito uma tabela para aparecer os valores parcelados
acontece que no IE a tabela aparece, as bandeiras dos cartoes tbm, mas os valores da parcela não aparecem, ja no FireFox, Opera e afins
funciona perfeitamente, creio que tenha algo a ver com o innerHTML e o $('CreditCardTable')
o problema é que minha praia é C++, eu só me disponibilizei para tentar ajudar meu amigo rsrsrs, mas me ferrei pois não estou conseguindo
arrumar!

se alguem puder me ajudar, dar uma dica, eu agradeceria!

um forte abraço.

7 Respostas

mathiasnw

em algumas versões do IEca ele nao aceita innerHTML com tabelas.
tente mudar de uma tabela para um div e veja o que acontece.

wbdsjunior

tente trocar innerHTML por innerText.

$('CreditCardTable').innerText = innerHTML;
R

[quote=wbdsjunior]tente trocar innerHTML por innerText.

$('CreditCardTable').innerText = innerHTML;

olá tudo bem? Bom fiz o qeu me disse, e no IE não apareceu a msg de erro, mas apareceu sem formatação
assim:

&lt;tr class="Grid_Header"&gt;&lt;td width="33%"&gt;Parcelas&lt;/td&gt;&lt;td width="33%"&gt;Valor da Parcela&lt;/td&gt;&lt;td width="33%"&gt;Valor Total&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;1 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 2.999,00&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 2.999,00&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;2 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 1.544,34&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.088,67&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;3 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 1.039,75&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.119,26&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;4 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 787,39&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.149,55&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;5 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 636,09&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.180,44&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;6 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 535,23&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.211,39&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;7 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 463,23&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.242,58&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;8 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 409,21&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.273,71&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;9 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 367,26&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.305,32&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;10 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 333,70&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.336,99&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;11 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 306,26&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.368,84&lt;/td&gt;&lt;/tr&gt;&lt;tr class="Grid_Header"&gt;&lt;td style="color: Red;"&gt;12 x&lt;/td&gt;&lt;td style="color: Red;"&gt;R$ 283,41&lt;/td&gt;&lt;td style="color: Green;"&gt;R$ 3.400,87&lt;/td&gt;&lt;/tr&gt;

mas no FireFox e demais que antes funcionavam certo, agora não funciona!
rsrsrs o errinho chato!

wbdsjunior

a saída ficou assim porque você não colocou \n onde quer quebrar a linha.

var innerHTML = '&lt;tr class="Grid_Header"&gt;\n'; innerHTML += ' &lt;td width="33%"&gt;Parcelas&lt;/td&gt\n';
acho que me enganei. o que deve funcionar na maioria dos navegadores é o innerHTML mesmo. veja.

mathiasnw

Vai no braço segue o codigo abaixo.

Exemplo:

var table = document.createElement("table");
        var tbody = document.createElement("tbody");
        //Primeira Linha
        var tr = document.createElement("tr");
        var td= document.createElement("td");
        tr.appendChild(td);
        td= document.createElement("td");
        td.setAttribute("width","70");
        td.appendChild($textnode("Id"));
        tr.appendChild(td);
        td= document.createElement("td");
        td.setAttribute("width","500");
        var input = $input("txtid","cssid","text");
        input.setAttribute("readonly","readonly");
        input.value = id;
        td.appendChild(input);
        tr.appendChild(td);
        td= document.createElement("td");
        tr.appendChild(td);
        tbody.appendChild(tr);
        // Segunda Linha
        tr = document.createElement("tr");
        td= document.createElement("td");
        tr.appendChild(td);
        td= document.createElement("td");
        td.appendChild($textnode(unescape("Descri%E7%E3o")));
        tr.appendChild(td);
        td= document.createElement("td");
        tr.appendChild(td);
        td= document.createElement("td");
        tr.appendChild(td);
        tbody.appendChild(tr);
        // Terceira Linha
        tr = document.createElement("tr");
        td= document.createElement("td");
        tr.appendChild(td);
        td= document.createElement("td");
        if(isIE()){
            td.setAttribute('colSpan','2');
        }else{
            td.setAttribute('colspan','2');
        }
        var textarea = $textarea("txtdescricao","csstextareap");
        td.appendChild(textarea);
        tr.appendChild(td);
        td= document.createElement("td");
        tr.appendChild(td);
        tbody.appendChild(tr);
        // Quarta Linha
        tr = document.createElement("tr");
        td= document.createElement("td");
        tr.appendChild(td);
        td= document.createElement("td");
        td.appendChild($textnode("Link"));
        tr.appendChild(td);
        td= document.createElement("td");
        var input = $input("txtlink","csslinkg","text");
        input.setAttribute('onkeypress',' mascara(this,msite);');
        td.appendChild(input);
        tr.appendChild(td);
        td= document.createElement("td");
        tr.appendChild(td);
        tbody.appendChild(tr);
        // Quinta Linha
        tr = document.createElement("tr");
        td= document.createElement("td");
        tr.appendChild(td);
        td= document.createElement("td");
        td.appendChild($textnode("Imagem"));
        tr.appendChild(td);
        td= document.createElement("td");
        
        var frmcliente = document.createElement("form");
        frmcliente.setAttribute('id','frmcliente');
        frmcliente.setAttribute('name','frmcliente');
        frmcliente.setAttribute('action','controller?command=upload.ImagemCliente');
        frmcliente.setAttribute('method','post');
        frmcliente.setAttribute('enctype','multipart/form-data');
        
        frmcliente.appendChild($input2("txtoldfile","hidden"));
        frmcliente.appendChild($input2("txtname","hidden"));
        var tablefrm = document.createElement("table");
        var tbodyfrm = document.createElement("tbody");
        var linha = document.createElement("tr");
        var cell1 = document.createElement("td");
        cell1.setAttribute('width','300');
        var file = $input("txtfile","cssemail","file");
        file.onchange = function(){
            $('txtname').value = this.value;
            if(this.value!=""){
                cliente.startUpload(this.form,0,cliente.endUpload);
            }
        }
        cell1.appendChild(file);
        linha.appendChild(cell1);
        cell1 = document.createElement("td");
        cell1.appendChild($img("pload","images/loading.gif","none"));
        linha.appendChild(cell1);
        tbodyfrm.appendChild(linha);
        tablefrm.appendChild(tbodyfrm);
        frmcliente.appendChild(tablefrm);
        
        td.appendChild(frmcliente);
        tr.appendChild(td);
        td= document.createElement("td");
        tr.appendChild(td);
        tbody.appendChild(tr);
        table.appendChild(tbody);
        
        // Fim do Form
        var form = document.getElementById("form");
        form.innerHTML = "";
        form.appendChild(table);
R

em tempo, muitos me falaram que o innerHTML da pau com Table
então fui fuçando os arquivos e achei isso:

<div class="product-collateral">
       <div class="collateral-box">
      <div class="head">
          <h4><?php echo $this->__('Simulação de parcelamento no Cartão de Crédito via PagSeguro'); ?></h4>
      </div>
       </div>
       <div class="collateral-box">
      <table style="width: 650px; text-align: center" cellspacing="0" cellpadding="0" border="0" align="center">            
         <tr>
            <td>
               <table class="FormasPagamentos" cellpadding="0" cellspacing="0">
                  <tr>
                     <td width="17%" id="tdVisa" style="padding-left: 4px;" onclick="document.getElementById('radVisa').checked = true;getPriceJSON('visa');">Visa<br><img style="padding-top: 5px;" align="middle" src="/loja/pagseguro/btn_visa.gif"><br><input id="radVisa" type="radio" name="grGrupo" value="radVisa" checked="checked"  onchange="getPriceJSON('visa');"/></td>
   
                     <td width="17%" id="tdMastercard"  style="padding-left: 4px;" onclick="document.getElementById('radMastercard').checked = true;getPriceJSON('mastercard');">MasterCard<br><img style="padding-top: 5px;" align="middle" src="/loja/pagseguro/btn_mastercard.gif"><br><input id="radMastercard" type="radio" name="grGrupo" value="radMastercard"  onchange="getPriceJSON('mastercard');"/></td>
   
                     <td width="17%" id="tdDiners" style="padding-left:4px;" onclick="document.getElementById('radDiners').checked = true;getPriceJSON('dinners');">Diners<br><img style="padding-top: 5px;" align="middle" src="/loja/pagseguro/btn_diners.gif"><br><input id="radDiners" type="radio" name="grGrupo" value="radDiners"  onchange="getPriceJSON('dinners');"/></td>
   
                     <td width="17%" id="tdAmex" style="padding-left: 4px;" onclick="document.getElementById('radAmex').checked = true;getPriceJSON('americanexpress');">Amex<br><img style="padding-top: 5px;" align="middle" src="/loja/pagseguro/btn_amex.gif"><br><input id="radAmex" type="radio" name="grGrupo" value="radAmex" onchange="getPriceJSON('americanexpress');"/></td>
   
                     <td width="17%" id="tdHipercard" style="padding-left: 4px;" onclick="document.getElementById('radHipercard').checked = true;getPriceJSON('hipercard');">Hipercard<br><img style="padding-top: 5px;" align="middle" src="/loja/pagseguro/btn_hipercard.gif"><br><input id="radHipercard" type="radio" name="grGrupo" value="radHipercard" onchange="getPriceJSON('hipercard')"/></td>
   
                     <td width="17%" id="tdAura" style="padding-left: 4px;" onclick="document.getElementById('radAura').checked = true;getPriceJSON('aura');">Aura<br><img style="padding-top: 5px;" align="middle" src="/loja/pagseguro/btn_aura.gif"><br><input id="radAura" type="radio" name="grGrupo" value="radAura" onchange="getPriceJSON('aura');"/></td>
                  </tr>
                </table>                  
            </td>
         </tr>
         <tr>
         <td align="center">
            <br />
            <table cellspacing="0" border="0" id="CreditCardTable" width="400">
            </table>
            <br />
         </td>
          </tr>
      </table>
       </div>
      
   </div>
troquei aonde tinha por ou
e funcionou tanto no IE como no FireFox o grande problema é que a pagina perde tudo a formatação, vira uma bagunça só! alguem sabe como eu usar ou
como tabela?

no mais muito obrigado pela ajuda!

R

ninguem?

Criado 9 de março de 2010
Ultima resposta 13 de mar. de 2010
Respostas 7
Participantes 3