Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ellen

Problema com a propriedade innerHTML

Recommended Posts

Olá Pessoal..Estou com um grande problema... com a propiedade innerHTML, no IE mostra os resultados certinhos... tudo ok, mas no Firefox, não acontece nada..Alguem sabe o q posso fazer?Obrigada pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha meu código...

<html><head> <title>Teste</title><script language="javascript">var max = 7 // maximo de linhas.var color = "#5394C8"; // esta será a cor do fundo quando selecionadovar selected_row = 0; //quantidade linhas selecionada.document.write ("\<\script language='JavaScript'>");for(i=1;i<(max + 1);i++){ funct_name = "funct_row" + i; document.write ("function " + funct_name +"()"); document.write ("{"); document.write ("end_color();"); row_name = "row" + i; document.write (row_name+".style.backgroundColor='"+color+"';"); document.write ("selected_row = "+ i +";"); document.write ("}");}document.write ("<\/script>");function end_color(){ if (selected_row != 0) { object = eval("row"+selected_row); object.style.backgroundColor ='white'; }}function setcolor(){ index = 'row1' object = eval(index); object.style.backgroundColor = "Blue";}function addrow(){ numrows = document.all.project_table.rows.length; if (numrows == max + 1) { alert("Você pode trabalhar no maximo "+ max + " por semana!"); } else { var n = document.contato.time.value; var o = document.contato.jogador.value; var newRow = document.all.project_table.insertRow(numrows); document.contato.count.value = numrows; (newRow.insertCell()).innerHTML = "<a id=f5><center>   "+numrows+"   <center></a>"; name = n + numrows; (newRow.insertCell()).innerHTML =n; name = o + numrows; (newRow.insertCell()).innerHTML =o; project_table.rows.item(numrows).id = "row" + numrows; project_table.rows.item().name = "row" + numrows; funct_name = eval("funct_row" + numrows); row_name = eval("row"+numrows); row_name.attachEvent("onclick",funct_name); }}function addrow1(){ numrows = document.all.project_table1.rows.length; if (numrows == max + 1) { alert("Você pode trabalhar no maximo "+ max + " por semana!"); } else { var n = document.contato.time1.value; var o = document.contato.jogador1.value; var newRow = document.all.project_table1.insertRow(numrows); document.contato.count.value = numrows; (newRow.insertCell()).innerHTML = "<a id=f5><center>   "+numrows+"   <center></a>"; name = n + numrows; (newRow.insertCell()).innerHTML =n; name = o + numrows; (newRow.insertCell()).innerHTML =o; project_table.rows.item(numrows).id = "row" + numrows; project_table.rows.item().name = "row" + numrows; funct_name = eval("funct_row" + numrows); row_name = eval("row"+numrows); row_name.attachEvent("onclick",funct_name); }}function deleter(){ numrows = document.all.project_table.rows.length; if (numrows != 1) { if(selected_row == 0) { project_table.deleteRow(numrows-1); document.contato.count.value = numrows - 2; } else { project_table.deleteRow(selected_row); changef(selected_row); document.contato.count.value = numrows - 1; } } selected_row = 0;}function deleter1(){ numrows = document.all.project_table1.rows.length; if (numrows != 1) { if(selected_row == 0) { project_table1.deleteRow(numrows-1); document.contato.count.value = numrows - 2; } else { project_table1.deleteRow(selected_row); changef(selected_row); document.contato.count.value = numrows - 1; } } selected_row = 0;}function changef(index){ numrows = document.all.project_table.rows.length; numrows = numrows + 1; for(i = index + 1;i<numrows;i++) { plus = i+1 min = i-1; row_name = eval("row" + i); row_name.cells(0).innerHTML = "<a id=f5><center>   "+ min +"   <center></a>"; row_name2 = "row" + min; funct_name = eval("funct_row" + i); row_name.detachEvent("onclick",funct_name); row_name.name = row_name2; row_name.id = row_name2; funct_name = eval("funct_row" + min); row_name2 = eval(row_name2); row_name2.attachEvent("onclick",funct_name); }}function readrows(){ var linha, cell_1, cell_2, cell_3,qtdrows,Time,Jogador; qtdrows = project_table.rows.length - 1 for(var k=1; k<=qtdrows; k++) { linha = project_table.rows(parseInt(k)); cell_1 = linha.cells(1); cell_2 = linha.cells(2); cell_3 = linha.cells(3); Time = cell_1.innerText; Jogador = cell_2.innerText; alert("O Time é : "+ Time+" ["+k+"]"); alert("O jogador é : "+ Jogador+" ["+k+"]"); horario.rows[0].cells(k-1).innerHTML=" <input type=hidden name=pds"+k+" value= "+Time+"> <input type=hidden name=phi"+k+" value= "+Jogador+"> "; horario.rows[0].insertCell().innerHTML = ""; } // end loop}function readrows1(){ var linha, cell_1, cell_2, cell_3,qtdrows,Time,Jogador; qtdrows = project_table1.rows.length - 1 for(var k=1; k<=qtdrows; k++) { linha = project_table1.rows(parseInt(k)); cell_1 = linha.cells(1); cell_2 = linha.cells(2); cell_3 = linha.cells(3); Time = cell_1.innerText; Jogador = cell_2.innerText; alert("O JOgador "+Jogador+" é do time : "+ Time+" ["+k+"]"); alert("O jogador é : "+ Jogador+" ["+k+"]"); horario.rows[0].cells(k-1).innerHTML=" <input type=hidden name=pds"+k+" value= "+Time+"> <input type=hidden name=phi"+k+" value= "+Jogador+"> "; horario.rows[0].insertCell().innerHTML = ""; } // end loop}</script></head><body leftmargin="45"><form action="" method="get" name="contato" id="contato" onSubmit="readrows();"> <table width="909" border="1"> <tr> <td width="449"><table width="391" border="1" align="center" id="horario2"> <tr> <td colspan="2" align="center"> </td> </tr> <tr> <td width="418" colspan="2" align="center"><a id="f"><strong>Selecione</strong></a></td> </tr> <tr> <td height="26" colspan="2" align="center"> Time <select name="time" id="time" tabindex="4"> <option value="Time A" selected>Time A</option> <option value="Time B">Time B</option> </select> Jogadores: <input type="text" name="jogador" id="jogador"></td> <tr> <td height="26" align="center"><input type="button" name="ReadRows" value="Ler Linhas" onClick="readrows();" class="button"> <input type="button" name="addGrupo" value="Adicionar" onClick="addrow();" class="button"> <input type="button" name="delrows" value="Excluir" onClick="deleter();" class="button"> <input type=hidden name=count> </td> </tr> </table> <table align="center" width="367" cellspacing="0" bordercolor="#dddddd" frame="box" id="project_table"> <!-- esta linha contem --> <!-- o tamanho da tabela o espaços a cor da borda seu frame e seu nome. --> <TBODY> <tr id=tr1 bgcolor="#808080"> <td width="21" height="25"></td> <td width="184"><div align="center"><a id="f3">Dias da Semana</a></div></td> <!-- nome da tabela Dias da Semana --> <td width="192"><div align="center"><a id="f3">Jogador</a></div></td> <!-- nome da tabela Horario de entrada --> </tr> </TBODY> </table> <p> </p></td> <td width="444"><table width="386" border="1" align="center" id="horario"> <tr> <td colspan="2" align="center"> </td> </tr> <tr> <td width="631" colspan="2" align="center"><a id="f4"><strong>Selecione</strong></a></td> </tr> <tr> <td height="26" colspan="2" align="center"> Time <select name="time1" id="i1" tabindex="4"> <option value="Time A" selected>Time A</option> <option value="Time B">Time B</option> </select> Jogadores: <input type="text" name="jogador1" id="jogador1"></td> <tr> <td height="26" align="center"><input type="button" name="ReadRows1" value="Ler Linhas" onClick="readrows1();" class="button"> <input type="button" name="addGrupo1" value="Adicionar" onClick="addrow1();" class="button"> <input type="button" name="delrows1" value="Excluir" onClick="deleter1();" class="button"> <input type=hidden name=count1> </td> </tr> </table> <table align="center" width="377" cellspacing="0" bordercolor="#dddddd" frame="box" id="project_table1"> <!-- esta linha contem --> <!-- o tamanho da tabela o espaços a cor da borda seu frame e seu nome. --> <TBODY> <tr id=tr2 bgcolor="#808080"> <td width="24" height="25"></td> <td width="176"><div align="center"><a id="f6">Time</a></div></td> <!-- nome da tabela Dias da Semana --> <td width="169"><div align="center"><a id="f6">Jogador </a></div></td> <!-- nome da tabela Horario de entrada --> </tr> </TBODY> </table> <p> </p></td> </tr> </table> <p> </p> <p> <input type="submit" name="Submit" value="Submit" > </p></form></body></html>

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde já...

 

O problema não é com o innerHTML. Passando o olho vi 2 erros:

 

linha 56, 59 e 62:

(newRow.insertCell()).innerHTML...

O método insertCell necessita de um parâmentro que identifica onde a nova célula será colocada. O IE assume que é após a última quando você não passa, mas o FF dá erro. Para resolver, coloque assim:

 

(newRow.insertCell(0)).innerHTML...(newRow.insertCell(1)).innerHTML...(newRow.insertCell(2)).innerHTML...

Mas uma coisa é o attachEvent que é um método exclusivo do IE. O FF tem o addEventListener, mas tem um jeito bem mais fácil de resolver isso:

 

row_name.onclick = funct_name;	//row_name.attachEvent("onclick",funct_name);

Veja se resolve.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Eduardo....Primeiramente, obrigada pela atenção.Deu certo em partes..... está aparecendo a tabela... só não consigo selecionar a linha para excluir... você tem idéia o q pode ser?Mais uma vez obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum... achei, na linha 66 você esqueceu de colocar o index da linha:

 

project_table.rows.item().name = "row" + numrows;
seria

 

project_table.rows.item(numrows).name = "row" + numrows;
Veja se resolve.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei q tivesse dado certo... mas estou com dois problemas...Estou tentando de tuudo, mas num tá dando certo...Os problemas são esses agora:- Tenho 2 tabelas, onde posso selecionar e excluir as linhas, mas só consigo fazer isso em 1.- Quando eu excluo a linha, ela tem um código, (1,2,3..) ela deveria assim q excluir voltar com o número anterior: por exemplo: Tenho 1, 2, 3, vou excluir a linha 2, deveria ficar 1,2, mas ela tá ficando 1,3. No IE dá certo, no FF, num dá.Xiii.... deu pra entender??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei q tivesse dado certo... mas estou com dois problemas...Estou tentando de tuudo, mas num tá dando certo...Os problemas são esses agora:- Tenho 2 tabelas, onde posso selecionar e excluir as linhas, mas só consigo fazer isso em 1.- Quando eu excluo a linha, ela tem um código, (1,2,3..) ela deveria assim q excluir voltar com o número anterior: por exemplo: Tenho 1, 2, 3, vou excluir a linha 2, deveria ficar 1,2, mas ela tá ficando 1,3. No IE dá certo, no FF, num dá.Xiii.... deu pra entender??

Ellen, se o novo problema não for relacionado ao título original do tópico, crie um novo tópico para solictitar a colaboração dos outros membros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigos, concordo com o Vagner:

O método innerHTML, não é padronizado pelo W3C e também não é adequado para manipulação de linhas em tabelas.

Mas pelo código da Ellen, o innerHTML está sendo usado para manipular o conteúdo de dentro das células da tabela. Para manipular as tabelas, foi feito uso de insertRow e insertCell. :DVoltando aos problemas:1 - As mesmas correções que você fez na função para adicionar as linhas da primeira tabela (addrow) devem ser feitas na função para a segunda tabela (addrow1).2 - Não entendi de onde vem esse código (1, 2, 3), mas o que você pode fazer é pegar o index da linha dentro da tabela e somar 1. Ficaria sempre sequencial independentemente da exclusão de uma ou mais.Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.