Ir para conteúdo
Fórum Script Brasil
  • 0

Table


olimpia

Pergunta

Para deletar uma linha da tabela eu estou usando o seguinte script

function Excluir(indexRow){
   document.getElementById("DataGrid1").deleteRow(indexRow);
}

Mas eu gostaria de executar esta function no evento de click duplo da linha, ou seja, preciso recuperar o indexRow quando for clicado duas vezes sobre a linha da tabela

Como posso fazer isto?

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

mas no exemplo que você fez eu tenho que informa qual a linha e celula.

não tem como eu fazer isto, pois quando removo uma linha o script já ficara errado, ou seja, vamos dizer que tenho uma tabela com 4 linhas

Se na linha 2 tiver um script pra excluir a linha 2, quando eu exluir a linha 2, eu terei 3 linhas na tabela

Mas a ultima linha tera um script para excluir a linha 4, ou seja, ocorrera um erro

Agora o index da linha se altera automatico, ou seja, depois que excluir a linha 2 a ultima linha tera o index = 3

Preciso fazer de tal forma que quando clicar na linha (TR) seja executada um function passando o valor index da linha

Como posso fazer isto?

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade eu não estou sabendo explicar o que quero dizer com palavras...

<head>
<script language="javascript">
function achaIndex(objLinha) {
var objTabela = document.getElementById('tabela');
for (i=0; i < objTabela.rows.length; i++) {
	if (objTabela.rows[i] == objLinha) return i;
}
return 0;
}
</script>
</head>
<body>
<table id="tabela" width="50%">
<tr onDblClick="deleteRow(achaIndex(this));"><td>1</td></tr>
<tr onDblClick="deleteRow(achaIndex(this));"><td>2</td></tr>
<tr onDblClick="deleteRow(achaIndex(this));"><td>3</td></tr>
<tr onDblClick="deleteRow(achaIndex(this));"><td>4</td></tr>
</table>
</body>
ou
<body>
<table id="tabela" width="50%">
<tr onDblClick="deleteRow(this.rowIndex);"><td>1</td></tr>
<tr onDblClick="deleteRow(this.rowIndex);"><td>2</td></tr>
<tr onDblClick="deleteRow(this.rowIndex);"><td>3</td></tr>
<tr onDblClick="deleteRow(this.rowIndex);"><td>4</td></tr>
</table>
</body>

Vê se é isso q você quer, se for me peça explicações...

Abraço

Crystian

Editado por Crystian
Link para o comentário
Compartilhar em outros sites

  • 0

Crystian eu fiz assim

var indexRow = "null";

// Rotina para identificar o index da linha
function achaIndex(objLinha) {
   var objTabela = document.getElementById("DataGrid1");
   indexRow = "null";
   for (i=0; i < objTabela.rows.length; i++) {
        if (objTabela.rows[i] == objLinha) {
            indexRow = i;
        }
   }
}
na tr eu fiz assim
<tr onClick="achaIndex(this);"><td>1</td></tr>
e coloquei um input assim
<INPUT onclick="deleteRow()" type="button" value="Excluir">
e a function
// Rotina para excluir
function deleteRow(){
    if (indexRow != "null"){
       document.getElementById("DataGrid1").deleteRow(indexRow);
       indexRow = "null";
     }	
}
Fazendo desta forma, o usuario clica na linha que quer excluir e depois no botão Excluir, esta perfeito..... Mas dentro destas linha eu tenho celulas que contem cada uma um <input type=text>. Eu gostaria de passar o index da linha para a variavel indexRow , quando algum destes input recebecem o focu Mas se eu fizer assim, não da certo
<input type=text onFocus="achaIndex(this);">

Por estara passando por parametro para a "achaIndex" as propriedades do <input> ao invés das propriedades da <tr>

Como poderia fazer para executar a function achaIndex quando o input receber o focu?

Link para o comentário
Compartilhar em outros sites

  • 0

fiz outra function pra ti...

function achaIdx(valor) {
var objTabela = document.getElementById('tabela');
for (i=0; i < objTabela.rows.length; i++) {
	var temp = objTabela.rows[i].innerHTML;
    if (temp.indexOf(valor) != -1) return i;
}
return 0;
}

Cara o valor que se passa como parâmetro tem que ser um valor q só tenha dentro daquela linha, algum valor q difere aquela linha das outras. Eu passei para testes o nome do campo texto, porque imagino você não tenha nenhum campo texto de nome igual. Qualquer coisa você pode colocar um id no campo texto que identifique aquela linha (id="linha01" por exemplo) e passar por parâmetro.

Vê se você entendeu, qualquer coisa posta ae...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Ele procura se dentro da linha existe um valor igual, se existir retorna o a posição(que no caso é o " i "). Se você colocar a palavra "linha" e um número sequencial como por exemplo 01 02 03 04 vai solucionar o teu problema...

Não sei se tu me entendeu... qualquer coisa posta de novo...

Abraço

Crysitan

Link para o comentário
Compartilhar em outros sites

  • 0

Preciso recuperar o valor de todos os input type=text da pagina

Tentei fazer assim

var nTxt = document.getElementsByTagName('input');
for(i=0;i<nTxt.length;i++){
  if (nTxt.type == "text" ){
       alert(nTxt.value);
  }	
}

Mas eu não concigo recuperar qual é o type dos input, como eu devo fazer?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...