11
J'ai une rangée de table, et à l'intérieur de celle-ci, j'ai un td (quoi que ce soit). Je voudrais changer l'attribut de classe du TR dans lequel se trouve TD sans utiliser d'identifiant ou de nom. Comme ça:Accès Javascript TR de TD
<tr>
<td onclick="[TR].setAttribute('class', 'newName')">My TD</td>
</tr>
Comment faire?
Il est étonnant de voir combien les réponses sont allés straigh t pour jQuery (bien que ce soit la chose * la plus simple possible * à faire même dans un vieux DOM ordinaire), et encore la syntaxe est incorrecte! – bobince
C'est parce que la réponse a été changée après que quelques questions aient été données. – Joop
Répondre
td
représente des données de table ..maintenant .. dans votre cas, vous devez la propriété
parentNode
dutd
..ou bobince suggéré dans son commentaire
Source
2010-03-26 15:24:49
+1 pour résoudre le problème sans utiliser l'ID (comme demandé en question) ou en se basant sur Jquery – thecoshman
PARFAIT! données de tableau ... Je vois. Je vous remercie! – arik
'setAttribute ('class')' ne fonctionne pas correctement dans IE6-7. Il existe de nombreux attributs où IE se trompe: évitez 'getAttribute' /' setAttribute' dans les documents HTML pour cette raison. À la place, utilisez les propriétés HTML du DOM niveau 1: 'this.parentNode.className = 'newName'' est plus compatible et plus lisible. – bobince
jQuery est probablement la meilleure façon de le faire, vous pouvez utiliser des sélecteurs tels que:
Pour ajouter une classe de « rouge » à tous les tr est dans table.mytable. Ce n'est que la pointe de l'iceberg - vérifiez qu'il devrait faire ce dont vous avez besoin.
Source
2010-03-26 15:18:10 DCD
Cela ne répond pas du tout à la question. Vous lui avez simplement dit d'aller chercher comment utiliser jQuery. Pas utile du tout. –
En jquery, il serait très simple si vous avez la référence à votre td:
Si vous ne voulez vraiment pas prendre une dépendance sur jQuery, alors vous pouvez faire une boucle d'obtenir le parentNode et en vérifiant son type comme une solution plus générale. Dans ce cas, vous pouvez simplement obtenir le parentNode puisque tr est toujours un parent direct de td. Vous pouvez faire quelque chose comme ça (notez cela n'a pas été testé):
Source
2010-03-26 15:19:43
vous vous rendez compte que si vous avez le code HTML
Ouais, j'ai corrigé la réponse pour noter que le mien est un script plus généraliste. –
Devrait être parent.nodeName === "TR" plutôt que parent.nodeName = "TD" – Ms2ger
Si vous pouvez utiliser jQuery il pourrait être quelque chose comme ça
Pour votre code
Source
2010-03-26 15:20:24 rahul
Sans tout cadre supplémentaire:
Source
2010-03-26 15:21:08 Joop
Ce n'est pas basé sur un td. –
Si vous avez l'élément dom dans javascript, vous pouvez utiliser .parentNode() puis qui vous donnera le noeud pérant, qui devrait être la ligne du tableau. vous pouvez définir .className
Source
2010-03-26 15:22:00 thecoshman
C'est en fait parentNode. –
Merci, mis à jour. – thecoshman
dans javascript c'est juste: ** document.getElementById ("someTDitem"). ParentNode.style.background = '# 77dd77'; ** – Fattie
Questions connexes