Usuário com melhor resposta
Pegar o value de uma cell table usando o valor da coluna e da linha em Javascript (e.Row[2].Column[3].value em javascript)

Pergunta
-
Olá a todos, estou tendo um pequeno problema, eu gostaria de poder pegar o conteudo de uma cell table usando o numero da linha e da coluna, sem que haja necessidade de clickar na celula , somente tendo sua coordenada dentro da tabela (linha,coluna), eu tenho aqui um trecho onde eu retiro:
loadFormEventsFromTable: function(field, fields, formula) { //loadFormEventsFromTable(' + field1 + ',' + campos + ',' + formula + '); var table = document.getElementById("#_x" + servicePortfolio.property + "x_"); var cells = table.getElementsByTagName('td'); // cells.length -- quantas celulas tem $("#_x" + servicePortfolio.property + "x_").click(function(e) { var $td = $(e.target).closest("td"); var currentCellText = $td.text(); var RowIndex = $td.parent().attr("sectionRowIndex"); //linha var ColIndex = $td.parent().children().index($td); //coluna var value = document.getElementById(field).value; //valor do campo formula onde eu devo jogar o resultado }); },
Eu ja tenho o valor da linha e coluna, pegando isso gostaria de ter acesso ao conteúdo, mais ow menos parecido com um grid view onde se passa o e.Row[2].Column[3].value algo parecido com isso, alguem teria algum tutorial que poderia estar me auxiliando ?
Atenciosamente
Marcus Fernando
Respostas
-
Encontrei uma forma, porém tive de adicionar mais um campo ao td da tabela, para ter uma referencia "rel" para cada celula, representado a coluna
temp += '<td><input class="field-number" rel=' + result[i].h + ' id="' + field1 + '" type="text" " /></td>'; $("#" + field1).live('click', function() { var tr = $(this).parent().parent(); servicePortfolio.ativaFormulas(tr, esp, '"' + result[i].e + '"', result[i].h); });
e no live click eu pego o numero da linha , e percorro todas as td com base na referencia do "input rel", dessa forma:
$(tr).find('td>input[rel="c2"]').val();
e passo dinamicamente os valores da coluna em formato parseInt:
ativaFormulas: function(tr, campos, formula, colunaResposta) { servicePortfolio.m_calcule = new window.servicePortfolio.CalcJS(); var results = campos.split(';'); var fields = []; var Campo = []; var Valor = []; for (var ef in results) { if (results[ef].toLowerCase().indexOf("c") != -1) { Campo.push(results[ef].toLowerCase()); Valor.push($(tr).find('td>input[rel="' + parseInt(results[ef].toLowerCase().replace("c", "").replace("\"", "")) + '" ]').val()); } } var objeto = {}; for (var i in Campo) { tc = $.trim(Campo[i]); fed = $.trim(Valor[i]); objeto[tc.toString().toLowerCase()] = fed; } servicePortfolio.m_calcule.calc(objeto); servicePortfolio.m_calcule.calc({ 'calculo': formula.toLowerCase().replace("\"", "").replace("\"", "") }); $(tr).find('input[rel="' + parseInt(colunaResposta) + '"]').val(servicePortfolio.m_calcule.variables.calculo); },
A forma coerente foi adicionar um campo rel ao input e buscar por aquele rel na respectiva linha
- Marcado como Resposta marcusfcbarbosa sexta-feira, 25 de outubro de 2013 17:54
Todas as Respostas
-
Com jQuery é fácil:
<html> <head> <script type="text/javascript" src="jquery-1.10.2.js"></script> </head> <body> <script type="text/javascript" charset="ISO-8859-1"> $(function() { var texto = $("#idDaTabela tr:nth-child(1) td:nth-child(1)").text(); alert(texto); }) </script> <table id="idDaTabela"> <tr> <td> celula 1,1 </td> <td> celula 1,2 </td> </tr> <tr> <td> celula 2,1 </td> <td> celula 2,2 </td> </tr> </table> </body> </html>
- Sugerido como Resposta Vitor Mendes segunda-feira, 21 de outubro de 2013 13:31
-
-
-
Encontrei uma forma, porém tive de adicionar mais um campo ao td da tabela, para ter uma referencia "rel" para cada celula, representado a coluna
temp += '<td><input class="field-number" rel=' + result[i].h + ' id="' + field1 + '" type="text" " /></td>'; $("#" + field1).live('click', function() { var tr = $(this).parent().parent(); servicePortfolio.ativaFormulas(tr, esp, '"' + result[i].e + '"', result[i].h); });
e no live click eu pego o numero da linha , e percorro todas as td com base na referencia do "input rel", dessa forma:
$(tr).find('td>input[rel="c2"]').val();
e passo dinamicamente os valores da coluna em formato parseInt:
ativaFormulas: function(tr, campos, formula, colunaResposta) { servicePortfolio.m_calcule = new window.servicePortfolio.CalcJS(); var results = campos.split(';'); var fields = []; var Campo = []; var Valor = []; for (var ef in results) { if (results[ef].toLowerCase().indexOf("c") != -1) { Campo.push(results[ef].toLowerCase()); Valor.push($(tr).find('td>input[rel="' + parseInt(results[ef].toLowerCase().replace("c", "").replace("\"", "")) + '" ]').val()); } } var objeto = {}; for (var i in Campo) { tc = $.trim(Campo[i]); fed = $.trim(Valor[i]); objeto[tc.toString().toLowerCase()] = fed; } servicePortfolio.m_calcule.calc(objeto); servicePortfolio.m_calcule.calc({ 'calculo': formula.toLowerCase().replace("\"", "").replace("\"", "") }); $(tr).find('input[rel="' + parseInt(colunaResposta) + '"]').val(servicePortfolio.m_calcule.variables.calculo); },
A forma coerente foi adicionar um campo rel ao input e buscar por aquele rel na respectiva linha
- Marcado como Resposta marcusfcbarbosa sexta-feira, 25 de outubro de 2013 17:54