","answerCount":2,"upvoteCount":0,"datePublished":"2021-03-08T15:08:20.787Z","dateModified":"2021-03-08T15:08:20.787Z","acceptedAnswer":{"@type":"Answer","text":"`textContent` は単なるテキストなので style プロパティはない。\r\n\r\n`id='check'`に color を設定しても、a要素のデフォルトの color が優先される。\r\n\r\n```js\r\nvar gender = document.getElementById('gender').textContent; \r\nvar check = document.getElementById('check');\r\nif(gender=='male'){\r\n check.style.color = 'Blue';\r\n}else if (gender=='female'){\r\n check.firstElementChild.style.color = 'Red';\r\n}\r\n```\r\n\r\nあるいは、\r\n\r\n```js\r\nvar gender = document.getElementById('gender').textContent; \r\nvar check = document.querySelector('#check > a');\r\nif(gender=='male'){\r\n check.style.color = 'Blue';\r\n}else if (gender=='female'){\r\n check.style.color = 'Red';\r\n}\r\n```","dateModified":"2021-03-08T15:48:16.438Z","datePublished":"2021-03-08T15:45:21.768Z","upvoteCount":1,"url":"https://teratail.com/questions/326729#reply-452469"},"suggestedAnswer":[{"@type":"Answer","text":"2点問題があります。\r\n\r\n- リンクはデフォルトで文字色を持つので、IDが`check`のp要素の文字色を変えても、そのままではリンクの色が表示される。\r\n- styleプロパティの対象は`getElementById`で得られるElementオブジェクトなので、変数checkの設定値にtextContentを付けてはいけない。\r\n\r\nさらに、次の点も考慮すべきでしょう。\r\n\r\n- 変数genderの値は、HTMLファイルのインデントにより前後に空白文字(改行を含む)が付く可能性を考慮して、trim()で処理すべき。\r\n\r\n```CSS\r\n#check a {\r\n color: inherit;\r\n}\r\n```\r\n\r\n```JavaScript\r\nvar gender = document.getElementById('gender').textContent.trim();\r\nvar check = document.getElementById('check');\r\nif (gender == 'male') {\r\n check.style.color = 'Blue';\r\n} else if (gender == 'female') {\r\n check.style.color = 'Red';\r\n}\r\n````","dateModified":"2021-03-08T15:59:37.298Z","datePublished":"2021-03-08T15:59:37.298Z","upvoteCount":1,"url":"https://teratail.com/questions/326729#reply-452472","comment":[]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/JavaScript","name":"JavaScriptに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/326729","name":"aタグの文字色を条件によって変えたい"}}]}}}
質問するログイン新規登録

Q&A

解決済

2回答

1661閲覧

aタグの文字色を条件によって変えたい

makosama4493

総合スコア21

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/03/08 15:08

0

0

$genderの内容によってCHECKの色を変えたいのですが下記のコードでは色がかわりません

<p id='gender'><? php echo $gender; ?></p> <p id='check'><a href='list.php'>CHECK</a></p> <script> var gender = document.getElementById('gender').textContent; var check = document.getElementById('check').textContent; if(gender=='male'){ check.style.color = 'Blue'; }else if (gender=='female'){ check.style.color = 'Red'; } </script>

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

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

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

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

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

guest

回答2

0

2点問題があります。

  • リンクはデフォルトで文字色を持つので、IDがcheckのp要素の文字色を変えても、そのままではリンクの色が表示される。
  • styleプロパティの対象はgetElementByIdで得られるElementオブジェクトなので、変数checkの設定値にtextContentを付けてはいけない。

さらに、次の点も考慮すべきでしょう。

  • 変数genderの値は、HTMLファイルのインデントにより前後に空白文字(改行を含む)が付く可能性を考慮して、trim()で処理すべき。

CSS

1#check a { 2 color: inherit; 3}

JavaScript

1var gender = document.getElementById('gender').textContent.trim(); 2var check = document.getElementById('check'); 3if (gender == 'male') { 4 check.style.color = 'Blue'; 5} else if (gender == 'female') { 6 check.style.color = 'Red'; 7}

投稿2021/03/08 15:59

Daregada

総合スコア11992

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

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

0

ベストアンサー

textContent は単なるテキストなので style プロパティはない。

id='check'に color を設定しても、a要素のデフォルトの color が優先される。

js

1var gender = document.getElementById('gender').textContent; 2var check = document.getElementById('check'); 3if(gender=='male'){ 4 check.style.color = 'Blue'; 5}else if (gender=='female'){ 6 check.firstElementChild.style.color = 'Red'; 7}

あるいは、

js

1var gender = document.getElementById('gender').textContent; 2var check = document.querySelector('#check > a'); 3if(gender=='male'){ 4 check.style.color = 'Blue'; 5}else if (gender=='female'){ 6 check.style.color = 'Red'; 7}

投稿2021/03/08 15:45

編集2021/03/08 15:48
hatena19

総合スコア34373

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

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

makosama4493

2021/03/10 05:14

下段のコードで解決しました。自分の力では思いもつかないコードでした。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問