
クリックされた罫表セルの行番号、列番号を取得する事は出来るのでしょうか。
例えば 下記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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- Perl PERL 1 2022/04/26 14:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビンゴゲームの作成
-
JavaScriptでテーブルをクリッ...
-
VBScriptの繰り返し文について
-
まとめてセルの色を変えたい
-
表内の列や行の結合に関して
-
テーブルのサイズを変更するこ...
-
jQueryのloadを使用して要素を...
-
Tablesorteを2行一組でソートする
-
htmlとjavascriptの書き方について
-
狙った位置にスクロール位置を...
-
テーブルの料金表の複雑な記述方法
-
表のなかのクリックした行を取...
-
HTML の、テーブルのセルの可変...
-
Javascriptを使うのか、CSSでで...
-
javascript についてご教示くだ...
-
JavaScript ボタンで指定の箇所...
-
WEB上の表でソートするためのJa...
-
JavaScriptで、テーブルクリッ...
-
メールフォームのラジオボタン...
-
フォームの値を
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定<table>内の<td>の色を変える
-
ハイパーリンクを別ウインドウ...
-
プルダウンで選択すると、DBの...
-
JavaScriptで特定のtdタグにcla...
-
至急!GetElementById でtdの...
-
一覧から選択した行の行番号を...
-
クリックされた罫表セルの行番...
-
tableの任意行にfocusをあてる
-
javascript クリックすると、あ...
-
チェックボックスにチェックが...
-
マウスをブラウザの外に出した...
-
ブルダウン選択でページの表示...
-
Excelで作ったhtmlファイルのサ...
-
スクロールバーの表示位置を変...
-
動的なtableの値を取得したい
-
ツールチップにテーブル左端列...
-
【UWSC】HTML内のある部分を抽...
-
別ページからOnclickでテーブル...
-
【JQuery】テーブルで行選択さ...
-
JSで、テーブルのある行のみ、...
おすすめ情報