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

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

詳細はこちら
JavaScript

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

Q&A

解決済

3回答

1496閲覧

if文の中にjQueryを書いても反映されない問題

gyoruo

総合スコア61

JavaScript

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

0グッド

0クリップ

投稿2019/09/16 18:16

やりたい事は、ボタンをクリックするとresult.htmlにとんでテキストを表示させる事です。ページ移動は成功しますが、文字表示がうまくいきません。if文の中にjQueryでclick処理をする記述が怪しいと思うのですが、どこが間違っているのかわからないので教えて欲しいです。

HTML

1<body> 2 <p><input id="choice1" type="button" value="ボタン1" onclick="location.href='result.html'; stimu_(stimu1)"></p> 3 <p><input id="choice2" type="button" value="ボタン2" onclick="location.href='result.html'; stimu_(stimu2)"></p> 4 5 <script src="js/jquery-3.4.1.min.js"></script> 6 <script src="js/index.js"></script> 7</body>

JavaScript

1// 回答をresult.htmlに送信 2function stimu_1(stimu1) { 3 document.write("<div>"+stimu1+"</div>"); 4} 5function stimu_2(stimu2) { 6 document.write("<div>"+stimu2+"</div>"); 7} 8if($("#choice1").click(function(){ 9 var stimu1 = 1; 10 return stimu1; 11})); 12if($("#choice2").click(function(){ 13 var stimu2 = 2; 14 return stimu2; 15}));

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

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

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

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

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

yoorwm

2019/09/17 01:13 編集

他の方が回答されているように基本的な構文から滅茶苦茶なので、基本から真面目に勉強なさる方が良いかと思います。 後、「何をしたいのか?」も明確で無いので、要件を明確にする練習もされると良いかと思います。
guest

回答3

0

ベストアンサー

if文の中にjQueryでclick処理をする記述が怪しいと思うのですが

あやしいと思うなら、if取っ払いましょう。

あくまでセレクタに対するイベント付与を行うものなので、ifで評価する意味は全くありません。
returnしてもイベントを終了するだけで受け取りがないように思いますし、1とか2とか返してもifで評価されるのはあくまで式のtrue/falseです。

「どう使いたいか」によってイベント付与のタイミングを分けたいということなのでしょうか。要件を整理してみてください。

投稿2019/09/16 20:23

編集2019/09/16 20:25
m.ts10806

総合スコア80875

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

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

0

ご希望のことは、ボタンクリックで移動した先のページを、前のページでどのボタンを押したかによって表示を変更したいということでしょうか。

だとしたら、コードの基本的な間違いもありますが、それ以前に、考え方も間違っています。
JavaScript(jQuery)はそのページだけで有効で、ページ移動したらコードや変数はすべて破棄されます。
もし、移動先のページも操作できたらセキュリティ上危険ですよね。

ということで、下記のような考え方になります。
0. ページ移動するときに次のページに値を受け渡す。
0. 次のページで値を受け取っで、それをもとにページ内に表示する。

値の受け渡しの方法はクッキーとかローカルストレージとかいろいろありますが、
URLパラメーターを使うのが比較的簡単です。
URLパラメーターとはURLの最後に、?パラメータ名=値 というように付加したものです。
(そのようなURLをよく見かけますよね。)

元ページのHTML

html

1 <p><input id="choice1" type="button" value="ボタン1" onclick="location.href='result.html?stimu=1'"></p> 2 <p><input id="choice2" type="button" value="ボタン2" onclick="location.href='result.html?stimu=2'"></p>

 
移動先のjs

js

1var param = location.search; 2if(param == "stimu=1") { 3 document.write("<div>1</div>"); 4} else if(param == "stimu=2"){ 5 document.write("<div>2</div>"); 6}

これで、location.searchで stimu=1stimu=2 を受け取れますので、
それでif文で表示を変更すればいいでしょう。
(ちなみに、document.write は非推奨なんですが、現状はそういうスキルレベルではなさそうなので)

jsの文法は一から勉強してください。

投稿2019/09/17 03:09

編集2019/09/17 03:15
hatena19

総合スコア34073

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

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

0

全体的に間違ってます

onclick内の「stimu_(stimu1)」という表現は
stimu_()という関数にstimu1という変数を渡す処理です。
stimu_()関数が用意されていないのでエラーになります

location.hrefでページ遷移した後に関数を実行するのも意味がありません
「文字表示がうまくいきません」というのは遷移後に
document.writeで表示するのですか?
ちょっとなにがしたいか理解できません

$("#choice1").click()をifの中に置くのはNGです

var stimu1に1をいれてstimu1をreturnしてもstimu1がグローバル変数として
挙動することはありません

構文的にもifが条件だけあって実行文がないように見受けられます

投稿2019/09/17 00:32

yambejp

総合スコア116661

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問