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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

HTML

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

Q&A

解決済

1回答

698閲覧

ボタン一つでHTML要素の一部分を配列の内に指定した色にランダムで変更できるシステムを作成したい

Kengo_jeb

総合スコア9

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2020/05/18 12:33

ある一部分のHTML要素(.head__up#targe)を、ボタンを押したらランダムで色が変更できるようにしたいです。必ず守るべき使用として、色変えの要素はCSSに記述した値を使用するのではなく、配列内にあるカラー要素を選択してランダムで色が変わるように実装したいと考えています。
最終的に、入力したカラーからランダムに値が表示されるようにしたいため、上記のやり方でおこなっております。
もし、分かる方や私のコードを修正できる方が見えましたら、ご教授の程、宜しくお願い致します。

index.html.haml

1コード 2.warp 3 .bodies 4 .head 5 .head__up#target{style: "white"} 6 .head__down 7 %form 8 %input{:type => "button", :value => "更新"}/ 9 .post 10 = link_to "新規登録", new_product_path, class: "btn-default btn-gray"

JSに関しては、検証を行うと.addEventListenerでnullと表示されます

コード document.querySelector('button').addEventListener('click', () => { const targetNode = document.getElementById('target'); if (targetNode.style.contains('white') === true) { targetNode.style.remove('white'); } else { var colors = new Array( "yellow", "red", "blue", "green", "black", "brown", "gray", "orange", "purple", "white"); var index = Math.floor(Math.random() * colors.length); targetNode.style.add = colors[index]; } });

CSSのコードは必要ないですが、一応掲載させて頂きます

index.css

1コード 2.warp{ 3 background-color: #f6f6f6; 4 min-width: 650px; 5} 6.bodies{ 7 margin: 30px auto 0; 8 background-color: #fff; 9 height: 600px; 10 width: 70%; 11 overflow: scroll; 12 13} 14 15.head{ 16 border-bottom: 1px solid #f6f6f6; 17 align-items: center; 18 display: flex; 19 flex-direction: column; 20 21} 22.head__up{ 23 display: inline-block; 24 width: 100px; 25 height: 50px; 26 border-radius: 50% / 100% 100% 0 0; 27 border:1px #000000; 28 border-style: solid; border-width: thin; 29} 30#target{ 31 background-color: white; 32} 33 34.head__down{ 35 display: inline-block; 36 width: 100px; 37 height: 50px; 38 border-radius:50%/ 0 0 100% 100%; 39 background: #F0DDC3; 40 41} 42

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

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

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

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

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

guest

回答1

0

ベストアンサー

Haml (ですよね?)は詳しくないのですが、 {style: "white"} では想定通りにならないのでは?
バックグラウンドがたまたま白だから白に見えているだけだと思います。
{style: "background-color: white"} ではないでしょうか。

javascript

1targetNode.style.add = colors[index];

ではなく

javascript

1targetNode.style.backgroundColor = colors[index];

でどうでしょう。

あと蛇足ですが new Array( ... ) は使わず [ ... ] とした方がよいです。
new Array は引数によって挙動が変わることがあるため、仕様を理解していないと思わぬバグを生みます。


JSに関しては、検証を行うと.addEventListenerでnullと表示されます

これは document.querySelector('button')null になっているということでしょうか?
であればどこかに %button を置けばよいかと。
既にボタン設置済みなら document.addEventListener('DOMContentLoaded', func) として、DOM構築を待ってください。

投稿2020/05/18 13:18

htsign

総合スコア870

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

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

Kengo_jeb

2020/05/21 05:52

無事に解決しました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問