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

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

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

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

Q&A

解決済

1回答

176閲覧

ボタンの表示と戻り値

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2022/06/25 03:24

編集2022/07/20 04:33

javascript(ブックマーク内)で簡単な文字当てゲームを作ろうと考えています。
そこで、表示部分を書こうとした際、以下のコードで行き詰まってしまいました。

やりたいこととしては、
・sentaku()を実行した際、戻り値でボタンの番号(a1からa4)が帰ってくる
・sentaku()を実行した際、ボタンが表示され、ボタンが押された後は消える。

の二つです。
ボタンが消えないことと、returnをどこで使えばいいのかで行き詰まっています。

JavaScript

1function syokika() { 2 var d = document.createElement("div"); 3 d.style.display = "block"; 4 d.style.height = "700px"; 5 d.style.width = "1100px"; 6 d.style.background = "#000"; 7 d.innerHTML = ' < span class = "a a1" > < span id = bt1 class = b > 1 < 8 /span></span > < span class = "a a2" > < span id = bt2 class = b > 2 < 9 /span></span > 10 < span class = "a a3" > < span id = bt3 class = b > 3 < /span></span > < span class = 11 "a a4" > < span id = bt4 class = b > 4 < /span></span > 12 13 < span style = 14 "position:absolute;height:200px;top:400px;left:5%;width:90%;background-color:#fff;overflow-y:scroll;" 15 id = "next" > 16 < /span> < style > 17 .a1 { 18 top: 100 px; 19 left: 5 % ; 20 } 21 .a2 { 22 top: 100 px; 23 left: 55 % ; 24 } 25 .a3 { 26 top: 250 px; 27 left: 25 % ; 28 } 29 .a4 { 30 top: 250 px; 31 left: 75 % ; 32 } 33 34 div.a { 35 border: 1.5 px solid #00ff00; 36height:50px; 37width:20%; 38position:absolute; 39color:# fff; 40 font - size: 30 px; 41 text - align: center; 42 letter - spacing: 0.5e m; 43 display: block; 44 } 45 .b { 46 display: block; 47 margin: 10 px 0; 48 } < /style> 49 '; 50 document.querySelector("body").appendChild(d); 51 var e = document.getElementsByClassName("a"); 52 for (var i = 0; i < e.length; i++) { 53 e[i].style.display = "none"; 54 } 55 56} 57var e = document.getElementsByClassName("a"); 58 59function hide() { 60 for (var i = 0; i < e.length; i++) { 61 e[i].style.display = "none"; 62 } 63} 64 65elemeve = true; 66 67function sentaku(a, b, c, d) { 68 if (!typeof a == "undefined" || !typeof a == "number") { 69 document.getElementById("bt1").innerHTML = a; 70 } 71 if (!typeof b == "undefined" || !typeof b == "number") { 72 document.getElementById("bt2").inn1erHTML = b; 73 } 74 if (!typeof c == "undefined" || !typeof c == "number") { 75 document.getElementById("bt3").innerHTML = c; 76 } 77 if (!typeof d == "undefined" || !typeof d == "number") { 78 document.getElementById("bt4").innerHTML = d; 79 } 80 var e = document.getElementsByClassName("a"); 81 for (var i = 0; i < e.length; i++) { 82 e[i].style.display = "block"; 83 } 84 if (elemeve === true) { 85 elemeve = false; 86 var a1 = document.getElementById("a1"); 87 var a2 = document.getElementById("a2"); 88 var a3 = document.getElementById("a3"); 89 var a4 = document.getElementById("a4"); 90 a1.addEventListener("click", function() { 91 hide(); 92 }); 93 a2.addEventListener("click", function() { 94 hide(); 95 }); 96 a3.addEventListener("click", function() { 97 hide(); 98 }); 99 a4.addEventListener("click", function() { 100 hide(); 101 }); 102 } 103} 104 105 106syokika(); 107

どうしてもこれらの処理をブックマーク内(1スクリプト内)で完結したいです。
ご回答のほど、よろしくお願いします。

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

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

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

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

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

int32_t

2022/06/26 22:22

コードにきちんとインデントを付けてください。読みにくいです。 > ・sentaku()を実行した際、戻り値でボタンの番号(a1からa4)が帰ってくる 4つのうち、どのボタンの番号が返ってほしいのですか?
退会済みユーザー

退会済みユーザー

2022/07/20 03:59

押したボタンの番号です。 ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

js

1var a1 = document.getElementById("a1"); 2var a2 = document.getElementById("a2"); 3var a3 = document.getElementById("a3"); 4var a4 = document.getElementById("a4"); 5a1.addEventListener("click", function(){ 6hide(); 7}); 8a2.addEventListener("click", function(){ 9hide(); 10}); 11a3.addEventListener("click", function(){ 12hide(); 13}); 14a4.addEventListener("click", function(){ 15hide(); 16});

a1a4 という id を持った要素がないので、addEventListener() は実行できていないはずです。

js

1const buttons = document.querySelectorAll("a"); 2for (let a of buttons) { 3 a.addEventListener("click", event => { 4 hide(); 5 関数(buttons.indexOf(event.currentTarget)); 6 }); 7}

これで、関数() に0から3のボタン番号が渡ります。


・sentaku()を実行した際、戻り値でボタンの番号(a1からa4)が帰ってくる

ボタンのクリックはユーザが起こすものなので、sentaku() の戻り値として返すのは難しいです。Promise/async/await でそれっぽく作ることはできますが、初学者には早すぎます。上記のコードのように結果が欲しい処理を click イベントリスナから呼び出しましょう。

投稿2022/07/20 04:41

int32_t

総合スコア20841

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問