
クリックされた罫表セルの行番号、列番号を取得する事は出来るのでしょうか。
例えば 下記Tableの"き"という文字が入ったセルをクリックすると
列番号:2 行番号:3 という番号を取得したいのです。
<table>
<thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead>
<tbody>
<tr td>あ</td><td>い</td><td>う</td><td>え</td></tr>
<tr><td>お</td><td>か</td><td>き</td><td>く</td></tr>
<tr><td>け</td><td>こ</td><td>さ</td><td>し</td></tr>
<tr><td>す</td><td>せ</td><td>そ</td><td>な</td></tr>
</tbody>
</table>
onclickでidのついた所をクリックした時のアクションは取得できましたが、Csvなどからデータを取得したtableのセルをクリックした時の
列数、行数を取得する事は可能でしょうか。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
たとえばこんな感じでsiblingなノードを数えてみるとか・・・
<script>
window.onload=function(){
var t0=document.getElementById("t0");
var tds=t0.getElementsByTagName("td");
for(var i=0;i<tds.length;i++){
tds[i].onclick=function(){
var n=this.previousSibling;
var col=1;
while(n){
if(n.nodeName=="TD")col++;
n=n.previousSibling;
}
var n=this.parentNode.previousSibling;
var row=1;
while(n){
if(n.nodeName=="TR") row++;
n=n.previousSibling;
}
alert("列番号:"+col.toString()+" 行番号:"+row.toString())
}
}
}
</script>
<table id="t0">
<thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead>
<tbody>
<tr><td>あ</td><td>い</td><td>う</td><td>え</td></tr>
<tr><td>お</td><td>か</td><td>き</td><td>く</td></tr>
<tr><td>け</td><td>こ</td><td>さ</td><td>し</td></tr>
<tr><td>す</td><td>せ</td><td>そ</td><td>な</td></tr>
</tbody>
</table>
No.3
- 回答日時:
colspan、rowspanは考慮してません。
クロージャのメモリリークチェックはしてません。
複数のtbody、th、tdの考慮はしてません。(1つ目のtbodyのセル全てに適用します)
正攻法(?)はNo.1だと思います。
<script>
onload=function(){
var tbl=document.getElementsByTagName('table')[0].getElementsByTagName('tbody')[0];
for(var i=0,tr,trs=tbl.getElementsByTagName('tr');tr=trs[i];i++){
for(var j=0,td;td=tr.childNodes[j];j++){
td.onclick=GetCell(i+1,j+1);
}
}
tbl=trs=null;
function GetCell(r,d){
return function(){ TableClick(this, r,d); };
}
delete GetCell;
};
function TableClick(e, row, col){// eはエレメント自身
alert(' 行番号: '+row+', 列番号: '+col);
}
</script>
<table>
<thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead>
<tbody>
<tr><td>あ</td><td>い</td><td>う</td><td>え</td></tr>
<tr><td>お</td><td>か</td><td>き</td><td>く</td></tr>
<tr><td>け</td><td>こ</td><td>さ</td><td>し</td></tr>
<tr><td>す</td><td>せ</td><td>そ</td><td>な</td></tr>
</tbody>
</table>
> 例えば 下記Tableの"き"という文字が入ったセルをクリックすると
> 列番号:2 行番号:3 という番号を取得したいのです。
列と行の数え方が逆では?
No.2
- 回答日時:
TDにはcellIndex、TRにはrowIndexとsectionRowIndexというプロパティがあって、
桁番号、表全体中の行番号、所属セクション(theadやtbody)中の行番号がわかります。
http://www.doraneko.org/misc/dom10/19981001/leve …
http://www.doraneko.org/misc/dom10/19981001/leve …
colspanやrowspanでセルが結合された表だと#1さんのように数えるしかないですが。
以下、取得例。(tbody内の行番号の表示です)
クリックされたオブジェクトから親にさかのぼってTDやTRを見つけています。
(TDのonclickで関数を呼ぶならTDのparentNodeがTRになります。)
<html>
<head>
<title></title>
<script type="text/javascript">
document.onclick=function(e){
if(! e) e=window.event;
var S=e.srcElement||e.target;
var TD=null;
var TR=null;
while(S){
if(S.nodeName=='TD') TD=S;
if(S.nodeName=='TR') TR=S;
S=S.parentNode;
}
if(! TD) return;
alert('行:'+(TR.sectionRowIndex+1)+' 列:'+(TD.cellIndex+1));
}
</script>
</head>
<body>
<table>
<thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead>
<tbody>
<tr><td>あ</td><td>い</td><td>う</td><td>え</td></tr>
<tr><td>お</td><td>か</td><td>き</td><td>く</td></tr>
<tr><td>け</td><td>こ</td><td>さ</td><td>し</td></tr>
<tr><td>す</td><td>せ</td><td>そ</td><td>な</td></tr>
</tbody>
</table>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリックされた罫表セルの行番...
-
特定<table>内の<td>の色を変える
-
JavaScriptから自ページリンク...
-
javascriptでテーブルの一定数...
-
一覧から選択した行の行番号を...
-
ハイパーリンクを別ウインドウ...
-
slickのレスポンシブ > center...
-
ツリービューのチェックボック...
-
VB.NET DateTimeの型について
-
プルダウン 項目が多いので先頭...
-
confirmのOK・キャンセルを押し...
-
return trueとreturn falseの用...
-
iframe内のformをサブミットす...
-
<input>の選択肢をプルダウンメ...
-
onClickとsubmitの処理順序
-
javascriptで<table>背景色の取得
-
クリックでテーブル内の背景色...
-
別ウィンドウへのsubmitの挙動...
-
フォームから入力すると、入力...
-
submitするとなぜか2度実行する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンで選択すると、DBの...
-
ハイパーリンクを別ウインドウ...
-
tableの任意行にfocusをあてる
-
特定<table>内の<td>の色を変える
-
一覧から選択した行の行番号を...
-
CSVデータをツリー表示させたい
-
テーブルの項目の値取得
-
JavaScriptでテーブルをクリッ...
-
至急!GetElementById でtdの...
-
jspでのArrayListの値の表示
-
JavaScriptで特定のtdタグにcla...
-
javascript クリックすると、あ...
-
ビンゴゲームの作成
-
【UWSC】HTML内のある部分を抽...
-
クリックされた罫表セルの行番...
-
チェックボックスにチェックが...
-
まとめてセルの色を変えたい
-
指定した要素を含んだテキスト...
-
VBScriptの繰り返し文について
-
テーブル内に表示されている数...
おすすめ情報