##Code
html
1<button type="button" onclick="buttonClick('red')">red</button> 2<button type="button" onclick="buttonClick('orange')">orange</button> 3<button type="button" onclick="buttonClick('blue')">blue</button> 4<button type="button" onclick="buttonClick('finish')">finish</button> 5<p id='iElement'>Hi!</p>
script
1function changeColor(color,element){ 2if(color !== 'finish'){ 3 do { 4 switch(color){ 5 case 'red': 6 element.style.color = 'red'; 7 break; 8 case 'blue': 9 element.style.color = 'blue'; 10 break; 11 case 'orange': 12 element.style.color = 'orange'; 13 break; 14 }//switch 15 } while(color !== finish);//? 16}//if 17else{ 18 element.style.color = 'black'; 19}//else if 20}//function changeColor 21 22function buttonClick(color) { 23const element = document.getElementById('iElement'); 24changeColor(color,element); 25}//function buttonClick
##Action & Question
###コードを正しく理解します
期待される動作を実現するコードが表示されます。 しかし、偶然と試行錯誤によって作成されたため、これはなぜ起こるのかを理解されていません(たとえばdo...whileのstatementは明らかに奇妙です、しかし修正方法がわかりません)。
###より良い方法を見つけます
この試みは、以前に同じ目的によって作成されたコードが「対応するボタンを押すことによってテキストの色を1回変更する」ことしかできなかったために行われました。 反復処理(特に、 do...while)を使用するプログラムは初めて使用されるようなものなので、これは誤っているか、不適切に記述されている可能性があります。
##編集
###No.1: 目的を達成するコードが作成されました。
もう少し詳細なコードを書いているときにこのようなコードが機能しなかったため、簡略化されたテストが実行されていましたが、プロセスで何らかの問題が発生していたようです: 目的を達成するコードがすでに作成されています。ただし、誤解が生じた事実が警戒され、締切はいくらかの確認を経た後に実行されます。 また、コードは整形後に投稿されます。焦らないでください。
####No.2:No.1のコード
script
1function changeColor(color,element){ 2 switch(color){ 3 case 'red': element.style.color = 'red'; break; 4 case 'blue': element.style.color = 'blue'; break; 5 case 'orange': element.style.color = 'orange'; break; 6 } 7} 8function buttonClick(color) { 9 const element = document.getElementById('iElement'); 10changeColor(color,element); 11}
html
1<button type="button" onclick="buttonClick('red')">red</button> 2<button type="button" onclick="buttonClick('orange')">orange</button> 3<button type="button" onclick="buttonClick('blue')">blue</button> 4<p id='iElement'>Hi!</p>
No.3: No.2のコードを修正しました
修正部分の抜けがありました。 同じことを繰り返したくないので、全部示すことにしました。また、このコードでは特に必要がなかったので、finishは省かれています。
###No.4: 既存回答の確認を完了次第、回答の受付が終了されます。
ループが必要だと誤解した理由に見当がつきました。 まだ十分に検証されていませんが、それはここに書く必要がある場合でも補足となる内容に過ぎないため、回答の受付はその検証とは無関係に終了されます。 焦らないでください。
回答1件
あなたの回答
tips
プレビュー