

指定のdiv内にある一行目(もしくは、最初の3つ)のtdタグに対して
JavaScriptでClass名を付けたいのですが、どのようにすればよいでしょうか?
【HTML参考】
<div id="box">
<table>
<tr>
<td>セル1</td>
<td>セル2</td>
<td>セル3</td>
</tr>
<tr>
<td>セル4</td>
<td>セル5</td>
<td>セル6</td>
</tr>
</table>
</div>
上記のような時、div#box内の「セル1~3」に対してclass名を付けたいと言った場合です。
よろしくお願いいたします。
A 回答 (6件)
- 最新から表示
- 回答順に表示

No.6
- 回答日時:
<html>
<head><style> .red{ background-color:#c00; } </style></head>
<body>
<div id="box">
<table id="tb">
<tr>
<td>セル1</td>
<td>セル2</td>
<td>セル3</td>
</tr>
<tr>
<td>セル4</td>
<td>セル5</td>
<td>セル6</td>
</tr>
</table>
</div>
<script>
window.onload=function(){
ob = document.getElementById('tb').rows[0].cells;
for(i=0;i<ob.length;i++) ob[i].className='red';
}
</script>
</body>
</html>
直感的で俺はこれが楽。
No.4
- 回答日時:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Q237452 TestCase 1</title>
<style type="text/css">
table{
border-collapse:separate;
}
td.special{
border-style:solid;
background-color:red;
border-color:green;
border-width:medium;
}
</style>
<script type="application/ecmascript"><![CDATA[
function initialize(){
var tds = document.evaluate("//xhtml:div[@id='box']/xhtml:table/xhtml:tr[1]/xhtml:td",document.documentElement,getNS,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < tds.snapshotLength;i++){
var attr = tds.snapshotItem(i).getAttributeNode("class");
var attrval = "";
if (attr !== null){
attrval = attr.nodeValue;
}
var arr = attrval.split(new RegExp("[\\u0009|\\u0020|\\u000A|\\u0000C|\\u000D]","g"));
for (var j = 0;j < arr.length;j++){
if (arr[j] == ""){
arr.splice(j,1);
}
}
if (arr.indexOf("special") < 0){
arr.push("special");
}
attrval = arr.join("\u0020");
tds.snapshotItem(i).setAttribute("class",attrval);
}
}
function getNS(prefix){
switch(prefix){
case "xhtml":
return "http://www.w3.org/1999/xhtml";
default:
throw new RangeError();
}
}
]]></script>
</head>
<body onload="initialize();">
<div id="box">
<table>
<tr>
<td>セル1</td>
<td>セル2</td>
<td>セル3</td>
</tr>
<tr>
<td>セル4</td>
<td>セル5</td>
<td>セル6</td>
</tr>
</table>
</div>
</body>
</html>
<!--
Q. 今までの回答でgetAttributeを使ってたのに,何でgetAttributeNodeなんていう回りくどい記述をしているんですか?
A. W3Cの仕様と違うことに気づいてショックを受けたからです。MDCのgetAttributeメソッドのNotesを見てください。
Q.Mozilla,Safari,Operaで動作しないんですが。
可能性として二つ。
一つはapplication/xhtml+xmlで配布していないことが原因です。
text/htmlで配布する場合XPathの名前空間接頭辞を取り外し,
引数として与えている名前空間リゾルバをnullにしてください。
もう一つは,gooのシステムがURIっぽい文字列の前後に文字を埋め込むため,これを削除しないと正しい名前空間宣言として認識してくれなかったり,名前空間リゾルバ中の文字列リテラルが崩れたりします。かなり苦労しないと回答時には直せないので直しません。
Q. IEで動作しないんですが。
A. 理由は色々ありますが,直す気がありません。
application/xhtml+xmlをIEが読まないこと。
application/ecmascriptをIEが読まないこと
document.evaluateがIEにないこと
Q.他に言いたいことは?
A.getElementByIdは単一の要素返すからElementですけど,
getElementsByTagNameはノードリストなのでElementsなんですよね…。
-->
No.3
- 回答日時:
No2です。
質問の趣旨を捉え違えていたようです。ごめんなさい。。。1行目だけ取りたいなら以下のような方法でいかがでしょうか?
var divNode = document.getElementById("box");
var trNodeList = divNode.getElementByTagName("TR");
var tdNodeList = trNodeList[0].getElementByTagName("TD");
No.2
- 回答日時:
DOMを利用しても良いですが
どちらかというとJavaScript(HTML)では
classNameプロパティを使う人の方が多いかと思います。
var divNode = document.getElementById("box");
var tdNodeList = divNode.getElementByTagName("TD");
for(var i = 0; i < tdNodeList.length; i++) {
tdNodeList[i].className = "ClassName";
}
こんな感じでしょう。(※誤字あったらスマソ)
ちなみに上記例では「セル1~6」に対してclass名を付けています。
No.1
- 回答日時:
答えをそのまま書くのは約束でできないからヒントを
・div['box']の中の「td」群を取り出す。
・該当する値が入っているなら class という名前の「属性」に値を書き込む
こんな流れになるよ。
http://www.tohoho-web.com/js/dom.htm#getElements …
「javascript dom」辺りで探すと良いよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Perl PERL 1 2022/04/26 14:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスにチェックが...
-
JavaScriptで特定のtdタグにcla...
-
プルダウンで選択すると、DBの...
-
一覧から選択した行の行番号を...
-
特定<table>内の<td>の色を変える
-
JavaScriptでテーブルをクリッ...
-
マウスをブラウザの外に出した...
-
IE以外でdisplay:noneで隠した...
-
JavaScriptでテーブルの行入れ替え
-
ラジオボタンとセルの連動
-
至急!GetElementById でtdの...
-
空のテーブルを表示させたい
-
指定した「曜日」の「時刻」に...
-
\\u30ad\\u30fc\\u30dc・・・と...
-
jQueryで行の移動
-
ブルダウン選択でページの表示...
-
【UWSC】HTML内のある部分を抽...
-
スクロールバーの表示位置を変...
-
特定の文字列を挿入
-
javascript クリックすると、あ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハイパーリンクを別ウインドウ...
-
特定<table>内の<td>の色を変える
-
一覧から選択した行の行番号を...
-
tableの任意行にfocusをあてる
-
JavaScriptで特定のtdタグにcla...
-
プルダウンで選択すると、DBの...
-
Selenium.ChromeDriverの使い方...
-
チェックボックスにチェックが...
-
HTML中のTABLEのデータを抽出す...
-
マウスをブラウザの外に出した...
-
tdの中をクリックしたらチェッ...
-
至急!GetElementById でtdの...
-
IE以外でdisplay:noneで隠した...
-
テーブル内に表示されている数...
-
動的なtableの値を取得したい
-
テーブルの項目の値取得
-
クリックされた罫表セルの行番...
-
テーブル内に表示されている数...
-
Excelで作ったhtmlファイルのサ...
-
jqueryで表に連番No.を追加したい
おすすめ情報