🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

HTML

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

Q&A

解決済

2回答

2268閲覧

JavaScriptでonclickが使えない

phpsyoshinsya

総合スコア156

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2019/11/26 13:40

編集2019/11/28 19:38

###わからないことできないこと
下のソースのHTMLのボタンタグのonclickイベントで変化させられない。

###大文字小文字も詳しく調べて直してみましたが、win10 IE11でうまく動作しません。
私の勘違いや記載ミスなどありますでしょうか?

<html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <script type="text/javascript"> function change(){ handle=GetElementByID("change"); if(handle.innerText=="こんばんは"){…もし「handle.innerText」の値が「こんばんは」だったら次の行の処理をしてね handle.innerText="こんにちは"; handle=GetElementByID("change_button"); handle.innerText="変更する"; }…「handle.innerText」の値が「こんばんは」だったときの処理は終わりだよ else{…「if」文が偽と判断したら次の行の処理をしてね handle.innerText="こんばんは"; handle=GetElementByID("change_button"); handle.innerText="もとに戻す"; }…「if」分が偽だったときの処理は終わったよ } </script> <title>用事内容を変更しよう</title> </head> <body> <p id="change"> こんにちは </p> <button id="change_button" onclick="change();"> 変更する </button> </body> </html>

どこの間違えをご指摘いただいているのでしょうか?

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

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

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

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

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

m.ts10806

2019/11/26 21:34

質問本文 on clisk になってます。
guest

回答2

0

大有りです。

JS

1function change(){ 2 var change = document.getElementById("change"); 3 var button = document.getElementById("change_button"); 4 if(change.innerText=="こんばんは"){ 5 change.innerText="こんにちは"; 6 button.innerText="変更する"; 7 } else { 8 change.innerText="こんばんは"; 9 button.innerText="もとに戻す"; 10 } 11} 12

そもそもJSでは大文字小文字を区別をするので変えないでください。また、コメントの書き方も決まっているため、フォーマット通りに組んでください。

投稿2019/11/26 13:46

編集2019/11/26 23:11
kyoya0819

総合スコア10429

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

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

phpsyoshinsya

2019/11/26 16:05

大文字小文字も調べて直したつもりですが、間違っていましたね。すみませんでした。ただ、documentメソッドは省略できるということですか?すべにうえの方の回答でやりたいことはできていますが、省略可能かどうかについてお知らせください。
maisumakun

2019/11/26 22:51

window.getElementByIdはないかと思います。
kyoya0819

2019/11/26 23:10 編集

質問者文内のコードに無かったのを気づきませんでした。 修正しました。
phpsyoshinsya

2019/11/28 19:46

コードの修正とコメントありがとうございます。やはりオブジェクトの指定は大切ですね。
guest

0

ベストアンサー

<html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <script type="text/javascript"> function change() { var handle = document.getElementById('change'); if (handle.innerText == 'こんばんは') { handle.innerText = 'こんにちは'; handle = document.getElementById('change_button'); handle.innerText = '変更する'; } else { handle.innerText = 'こんばんは'; handle = document.getElementById('change_button'); handle.innerText = 'もとに戻す'; } } </script> <title>用事内容を変更しよう</title> </head> <body> <p id="change">こんにちは</p> <button id="change_button" onclick="change();">変更する</button> </body> </html>

投稿2019/11/26 14:18

junzi

総合スコア279

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

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

phpsyoshinsya

2019/11/26 14:49

varで変数を指定するのは、明示的にだと思っていましたが、必須と考えるべきですか?
junzi

2019/11/26 15:13

この場合無くても問題ないです。(宣言しないと文法違反なのかも?) 私もjavascriptはちゃんと勉強したことないのであれですが、明示的にというよりも癖ですね。 重複して宣言した時に意図しない動きになるので、癖でつけてます。 といってもエラー出してくないので厄介なのですが、、 今風だとverの代わりにletを使うようですね。letだとエラーを出してくれる?みたいです。 constもあるので調べてみてください。
phpsyoshinsya

2019/11/26 15:17

今回の場合varかどうかよりも、getElementByIdがdocumentメソッドの中にあるということですね?
junzi

2019/11/26 16:39 編集

``` <html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <script type="text/javascript"> function change() { let change = document.getElementById('change'); let change_button = document.getElementById('change_button'); if (change.innerText == 'こんばんは') { change.innerText = 'こんにちは'; change_button.innerText = '変更する'; } else { change.innerText = 'こんばんは'; change_button.innerText = 'もとに戻す'; } } </script> <title>用事内容を変更しよう</title> </head> <body> <p id="change">こんにちは</p> <button id="change_button" onclick="change();">変更する</button> </body> </html> ``` こんな感じにしてもわかりやすいかも
junzi

2019/11/26 15:27 編集

そうです。documentのメソッドです。 ざっくり言うとdocumentの中に <html> </head> <body> <p id="change">こんにちは</p> <button id="change_button" onclick="change();">変更する</button> </body> </html> これが入ってます。 document.getElementById('change');は documentの中の要素をIDを指定してゲットするとなりますね。
phpsyoshinsya

2019/11/26 15:56

丁寧な回答をありがとうございます。documentはメソッドで、getElementByIdはプロパティでよかったですか?
junzi

2019/11/26 16:01

documentはオブジェクト getElementByIdはメソッドですね。 プロパティは要素の事なのでheadとかbodyを指します。
phpsyoshinsya

2019/11/26 16:15

ありがとうございます。JavaScriptはオブジェクトとメソッドでしたね。下の方は、オブジェクトの表記をしていませんが、オブジェクトを省略可能なのでしょうか?
junzi

2019/11/26 16:47

いきなりメソッドだけ書いてもどのオブジェクトのメソッドか判断できませんのでオブジェクトは省略できません。 change.innerText = 'こんにちは'; が省略しているように見えるかもしれませんが、それは勘違いです。 changeは その上のlet change = document.getElementById('change');で代入しているので document.getElementById('change')で取得した要素が入っています。 その要素を書き換えています。
phpsyoshinsya

2019/11/26 17:21

そうですよね。でも、asuchi0819さんの回答では、documentオブジェクトが表記されていません。そこで、documentオブジェクトだけは省略可能なのかなぁと思ったのです。実際にはテストをしていないのでなんともですけど。どのように考えるのが望ましいですか?
maisumakun

2019/11/26 22:51

> documentオブジェクトだけは省略可能なのかなぁと思ったのです。 この場合、window.getElementById()が呼ばれます(が、そのようなメソッドは存在しなさそうです)。
miyabi_takatsuk

2019/11/26 23:34 編集

蛇足にはなりますが、解釈違いになると、思わぬ挙動を生むので、一応コメントです。 > varで変数を指定するのは、明示的にだと思っていましたが、必須と考えるべきですか? https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/var junziさんの仰る通り、今回はいらないですが、(グローバルの他の箇所に同じ名前の変数宣言がないため)記事にある通り、varないし、let、constで定義しないと、"グローバル変数"となってしまいます。 ようは、そのローカルスコープの外側のスコープの変数となるので、仕様を知らないで使うと思わぬ挙動になります。 (グローバル変数なのに、ローカルで値を変えたら、別のローカルスコープでも値が変わってしまった、など) なので、必須云々ではなく、状態が変わるということです。
phpsyoshinsya

2019/11/28 19:44

documentオブジェクトを省略すると、windowオブジェクトが呼ばれること、変数のスコープのこと、丁寧に解説ありがとうございます。他に何か注意をしなければならないことはありますか?この際ですからHTMLとJavaScriptの連携のことや、JavaScriptの文法などよくありそうな、今後私が気を付けた方がよさそうなこともご教授ください。
miyabi_takatsuk

2019/11/29 01:53

phpsyoshinsyaさん> とにかく、基本をまず習得すればいいと思います。 細かいとこはいろいろあれど、ここで話せるような内容ではないので、上記でしか言いようがありません。
phpsyoshinsya

2019/12/01 14:23

そうですね。基本に忠実に頑張ります、今回はありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問