![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
IEですと以下の記述で機能しますが、firefoxではchileNodesが使えません。
何か他に代用する方法はありませんでしょうか?
element.parentNode.previousSibling.childNodes[0].innerHTML;
実際にやりたいこととしては
id=p2のclickが押下された場合にp1、p3要素のinnerHTMLを取得したい。
<table>
<tr>
<td id="p1"><span><a href="#" onClick="click(this);">hoge1</a>ほげほげ1</span></td>
<td id="p2"><span><a href="#" onClick="click(this);">hoge2</a>ほげほげ2</span></td>
<td id="p3"><span><a href="#" onClick="click(this);">hoge3</a>ほげほげ3</span></td>
</tr>
</table>
ご教授宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
<?xml version="1.0" encoding="Shift_JIS"?>
<!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" xml:lang="ja" lang="ja">
<head>
<script type="text/javascript">
function click(what){
alert(what.parentNode.parentNode.localName)
alert(what.parentNode.parentNode.getAttribute("id"))
alert(what.parentNode.parentNode.previousSibling.localName)
alert(what.parentNode.parentNode.previousSibling.innerHTML)
alert(what.parentNode.parentNode.nextSibling.localName)
alert(what.parentNode.parentNode.nextSibling.innerHTML)
alert(what.parentNode.parentNode.childNodes[0].innerHTML)
alert(what.parentNode.parentNode.childNodes[1].textContent)
}
</script>
<title>ちょっとしたテストケース。質問者様は考えるタイプの人みたいなので実験してみるとわかるでしょう</title>
</head>
<body>
<p>
childNodes自体は有効。前者(ほげほげ1~ほげほげ3)と後者(ほげほげ4~ほげほげ6)の挙動は違う。
</p>
<table>
<tr><td id="p1"><span><em onclick="click(this);">ほげほげ1</em></span>hoge1</td><td id="p2"><span><em onclick="click(this);">ほげほげ2</em></span>hoge2</td><td id="p3"><span><em onclick="click(this);">ほげほげ3</em></span>hoge3</td></tr>
</table>
<table>
<tr>
<td id="p4"><span><em onclick="click(this);">ほげほげ4</em></span>hoge4</td>
<td id="p5"><span><em onclick="click(this);">ほげほげ5</em></span>hoge5</td>
<td id="p6"><span><em onclick="click(this);">ほげほげ6</em></span>hoge6</td>
</tr>
</table>
<p><a href="http://www.agavegroup.com/?p=32">参考リンク</a></p>
</body>
</html>
himajin100000様、ご教授有難う御座います。
前者と後者で挙動が違うんですね。
A.No3でもご解答いただいたとおり
>確かIEでは、改行のみは、テキストノードにはならないけど、
>Firefox ではなったと思うので多分そういうことかと思います。
だったんですね。詳しく書いていただいたので理解できました。
誠に有難う御座いました。
No.4
- 回答日時:
質問の説明のためにid を振っているのでないのであれば、
element.parentNode.parentNode.id
でid が取得できるので、
id のp2 から数字を分離し-1(+1)して目的のエレメントのid を作成してgetElementById で捕まえる方が簡単かもしれません。
No.3
- 回答日時:
Firefox でもchildNodes は、使えたと思いますよ。
確かIEでは、改行のみは、テキストノードにはならないけど、
Firefox ではなったと思うので多分そういうことかと思います。
つまり、
function f(element){
alert(element.parentNode.parentNode.previousSibling.innerHTML);
}
と書いたとき
IEでは、p1 の中味がとれてFirefox では、p1 の次の改行になっているということです。
なので、両方で同じ動作をさせるには、それを考慮したスクリプトにするか
<td>…</td><td>…</td><td>…</td>
のように改行を挟まないようにします。
BLUEPIXY様、ご教授有難う御座います。
改行がfirefoxでテキストノードになるとは思いませんでした。
大変勉強になりました。
しかし、IE、forefoxで統一してくれないものなんでしょうか。
No.1
- 回答日時:
>element.parentNode.previousSibling.childNodes[0].innerHTML;
ええと これコピペ?
だとしたら「elements」なのでは・・・?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- HTML・CSS html cssのmargin 5 2022/12/03 11:04
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jqueryとscriptでTABLEのセルを...
-
JavaScriptで特定のtdタグにcla...
-
ブルダウン選択でページの表示...
-
firefoxでchildNodesの代用
-
特定タグの文字を抽出するには
-
【UWSC】HTML内のある部分を抽...
-
slickのレスポンシブ > center...
-
confirmのOK・キャンセルを押し...
-
jquery.csv2table.jsのテーブル
-
ラジオボタンの値でリンク先を...
-
FormのonsubmitでJavaスクリプ...
-
onchangeイベントを強制的に発...
-
チェックボックスの値を変数に ...
-
if構文
-
ENTERキーを無効にしたいのです...
-
【JS】selectでchangeした時の...
-
return trueとreturn falseの用...
-
2次元配列で2項目についてソー...
-
ページを再読み込み後、再読み...
-
残り時間カウントダウン表示 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハイパーリンクを別ウインドウ...
-
プルダウンで選択すると、DBの...
-
一覧から選択した行の行番号を...
-
tableの任意行にfocusをあてる
-
特定<table>内の<td>の色を変える
-
JavaScriptで特定のtdタグにcla...
-
至急!GetElementById でtdの...
-
マウスをブラウザの外に出した...
-
【UWSC】HTML内のある部分を抽...
-
スクロールバーの表示位置を変...
-
クリックされた罫表セルの行番...
-
テーブルの変数について
-
動的なtableの値を取得したい
-
特定の文字列を挿入
-
テーブル内に表示されている数...
-
javascript クリックすると、あ...
-
テーブルの項目の値取得
-
javascriptで質問です。 displa...
-
Tablesorteを2行一組でソートする
-
\\u30ad\\u30fc\\u30dc・・・と...
おすすめ情報