質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

371閲覧

aタグのリンク文字をクリックのたびに変更するには?

shima3

総合スコア5

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/08/27 07:32

やりたいこと
クリックしたAタグの文字をクリックイベントで切り替えたい

以下のtableにはaタグが3箇所あります。
aタグをクリックしてOranges,Apples,Pinesの下部でそれぞれの詳細行を開く、閉じる
ということをやりたいです。さらに、詳細行を開いているときは
<a href="#">+ Close detail</a>
もう一度クリックして詳細行を閉じたときは
<a href="#">+ Open</a>
に戻したいです。

クリックしたとき、aタグのリンクの文字のみを変更するにはどうしたらよいでしょうか?

html

1<table id="products"> 2 <thead> 3 <tr> 4 <th>Product</th> 5 <th>Price</th> 6 <th>Detail</th> 7 <th>date</th> 8 </tr> 9 </thead> 10 <tbody> 11 <tr class="parent"> 12 <td>Oranges</td> 13 <td>190</td> 14 <td><a href="#">+ Open</a></td> 15 <td>22/08</td> 16 </tr> 17 <tr> 18 <td></td> 19 <td>100</td> 20 <td>A City </td> 21 <td>22/08/01</td> 22 </tr> 23 <tr> 24 <td></td> 25 <td>140</td> 26 <td>B City </td> 27 <td>22/08/02</td> 28 </tr> 29 30 <tr class="parent"> 31 <td>Apples</td> 32 <td>100</td> 33 <td><a href="#">+ Open</a></td> 34 <td>22/10</td> 35 </tr> 36 <tr> 37 <td></td> 38 <td>200</td> 39 <td>C City 1</td> 40 <td>22/09/1</td> 41 </tr> 42 <tr> 43 <td></td> 44 <td>230</td> 45 <td>D City </td> 46 <td>22/09/01</td> 47 </tr> 48 <tr> 49 <td></td> 50 <td>300</td> 51 <td>E City</td> 52 <td>22/09/03</td> 53 </tr> 54 <tr class="parent"> 55 <td>Pines</td> 56 <td>700</td> 57 <td><a href="#">+ Open</a></td> 58 <td>22/10</td> 59 </tr> 60 <tr> 61 <td></td> 62 <td>400</td> 63 <td>F City 1</td> 64 <td>22/10/1</td> 65 </tr> 66 <tr> 67 <td></td> 68 <td>440</td> 69 <td>G City 2</td> 70 <td>22/10/2</td> 71 </tr> 72 </tbody> 73</table> 74<style> 75 tbody tr { 76 display : none; 77} 78tr.parent { 79 display : table-row; 80} 81tr.open { 82 display : table-row; 83} 84 </style> 85<script> 86document.getElementById("products").addEventListener("click", function(e) { 87 if (e.target.tagName === "A") { 88 e.preventDefault(); 89 var row = e.target.parentNode.parentNode; 90 while ((row = nextTr(row)) && !/\bparent\b/.test(row.className)) 91 toggle_it(row); 92 } 93}); 94 95function nextTr(row) { 96 while ((row = row.nextSibling) && row.nodeType != 1); 97 return row; 98} 99 100function toggle_it(item){ 101 if (/\bopen\b/.test(item.className)) 102 item.className = item.className.replace(/\bopen\b/," "); 103 else 104 item.className += " open"; 105 } 106 107</script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こんにちは。

疑似要素を使ってみてはいかがですか?

サンプル

html

1 <td><a href="#"><!-- + Open を削除--></a></td>

css

1.parent a:after{ 2 content: "+ Open"; 3} 4.open a:after{ 5 content: "+ Close detail"; 6}

js

1 2document.getElementById("products").addEventListener("click", function(e) { 3 if (e.target.tagName === "A") { 4 e.preventDefault(); 5 var row = e.target.parentNode.parentNode; 6 toggle_it(row); // 追加 7 while ((row = nextTr(row)) && !/\bparent\b/.test(row.className)) 8 toggle_it(row); 9 } 10});

投稿2020/08/28 02:27

Lhankor_Mhy

総合スコア36960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問