2017-10-20 2 views
-2

J'ai un tableau HTML avec plusieurs lignes et colonnes. J'ai aussi une variable appelée userRowIndex qui a l'index d'une certaine ligne enregistrée dans elle. Je veux être en mesure de rendre le contenu de cette ligne entière modifiable en utilisant simplement JavaScript et ma variable userRowIndex. Comment puis-je faire ceci?Puis-je utiliser Javascript pour trouver une ligne de table par son rowIndex?

+0

Utilisez-vous une bibliothèque JavaScript? –

+0

Non, je n'utilise pas de bibliothèque JS, et je ne suis pas trop désireux d'en utiliser une. –

+0

Vous pouvez utiliser 'document.querySelector' avec le sélecteur CSS' nth-child' pour y parvenir avec JS vanilla. – Amy

Répondre

1

var rows = document.getElementById("myTable").getElementsByTagName('tr'); 
 
// whatever your userRowIndex is : 
 
var userRowIndex = 1; 
 

 
rows[userRowIndex].className = 'red';
<html> 
 
<head> 
 
    <style type='text/css'> .red{color:red;}</style> 
 
</head> 
 
<body> 
 
<table id="myTable"> 
 
\t <tr> 
 
\t \t <td>1</td> 
 
\t \t <td>One</td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td>2</td> 
 
\t \t <td>Two</td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td>3</td> 
 
\t \t <td>Three</td> 
 
\t </tr> 
 
</table> 
 
</body> 
 
</html>

+0

Cette méthode est bonne, mais sur une très longue table, elle pourrait causer du retard –

0

Ceci est un exemple de base comment un particulier td peut être faire modifiable à l'aide rowIndex

// get the table 
 
var getTable = document.querySelector("#demotable"); 
 
// adding event listener 
 
getTable.addEventListener('click', function(event) { 
 
    // current cell index 
 
    var col = event.target.cellIndex, 
 
    // get index of row from td 
 
    row = event.target.parentNode.rowIndex; 
 
    // set the contenteditable property to it 
 
    this.rows[row].cells[col].setAttribute('contenteditable', 'true') 
 
})
<table border id="demotable"> 
 

 

 
    <tr> 
 
    <td>1</td> 
 
    <td>2</td> 
 
    <td>3</td> 
 
    </tr> 
 
    <tr> 
 
    <td>4</td> 
 
    <td>5</td> 
 
    <td>6</td> 
 
    </tr> 
 

 
</table>

Notez également un td peut être modifiable à temps.Même si t il toute la ligne peut être rendre modifiable, mais une seule cellule peut être changé à un moment

0

Cela peut être plus rapide:

function getRowByIndex(userRowIndex) 
{ 
    var rows = null; 
    var row = null; 

    try 
    { 
     rows = document.getElementById("myTable").getElementsByTagName('tr'); 

     if(rows!=null) 
     { 
      // This uses 0 based indexing, so assume that the passed value is in that range 
      row = rows[userRowIndex]; 
     } 

    } 
    catch(e) 
    { 
     alert("getRowByIndex Error: " + e.Message); 
    } 
    finally 
    { 

    } 

    return row; 
}