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

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

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

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

HTML

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

Q&A

解決済

2回答

2741閲覧

取得した情報を使って、表示の置き換えをしたい

deraono

総合スコア15

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2019/04/14 03:18

前提・実現したいこと

javascriptを始めたばかりの初心者です。
やりたいこととしては

・入力フォームに入れた数字に対応して文字の出しわけを行いたい
・出しわけをした文字は、HTML内の「最初の文字」と切り替えて出したい
・innerHTMLもしくはinnerTEXTを利用して実装したい
です

「送信」ボタンを押下するとコンソールに以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

Uncaught TypeError: Cannot create property 'innerHTML' on string '100' at getValue at HTMLInputElement.onclick

該当のソースコード

HTML

1 <body> 2<div id="mydiv"> 3 <h1>最初の文字</h1> 4</div> 5 6<input type="text" id="text" placeholder="入力する"> 7<input type="button" value="送信" onclick="getValue('text')"> 8 </body>

javasuript

1function getValue(text){ 2 var score = document.getElementById(text).value; 3 var mydiv = document.getElementById("score"); 4 score.innerHTML = "mydiv"; 5if (0 <= score && score <= 100 ) { 6 ("100以内".bold().fontcolor("red") 7} else { 8 ("100以外".bold().fontcolor("blue"))

試したこと

if文のところに「document.write」を入れて表示の出しわけができることは確認しています。
入力した数字での表示置き換えについては、上記のエラーメッセージが表示されて成功していません

if (0 <= score && score <= 100 ) {
document.write("100以内".bold().fontcolor("red")
} else {
document.write("100以外".bold().fontcolor("blue"))

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答2

0

ベストアンサー

エラーの原因はElementでなくvalueに対してinnerHTMLを記述してしまっているからです。

js

1 var score = document.getElementById(text).value; 2 var mydiv = document.getElementById("score"); 3 // score.innerHTML = "mydiv"; 4 mydiv.innerHTML = "mydiv";

で、スタイルを書き換えるにはElementのクラスを変えるか、Elementのstyleプロパティにアクセスしてください。

【JavaScriptでスタイルの動的変更方法 - Qiita】
https://qiita.com/takahiro_itazuri/items/559427278f315ed119fe

【JavaScriptによってHTMLやCSSを動的に書き変えるとは?】
https://www.1-firststep.com/archives/6558

【javascriptでCSSを操作してスタイルを設定する | 大阪市天王寺区SOHOホームページ制作 | デザインサプライ-DesignSupply.-】
https://designsupply-web.com/knowledgeside/3209/

投稿2019/04/14 05:53

kei344

総合スコア69400

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

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

deraono

2019/04/14 14:26

innerHTML記述の記述についてご指摘いただきありがとうございます。 styleの変更について試してみたいと思います!! また参考になるサイトをお知らせいただきましたこと、あわせてお礼申し上げます
guest

0

こんな感じででしょうか?

<body> <h1 id="mydiv">最初の文字</h1> <input type="text" id="text" placeholder="入力する"> <input type="button" value="送信" onclick="getValue('text')"> </div> <script> function getValue(text){ var score = document.getElementById("text").value; var mydiv = document.getElementById("mydiv"); if (0 <= score && score <= 100 ) { score = "100以内".bold().fontcolor("red"); } else { score = "100以外".bold().fontcolor("blue"); } mydiv.innerHTML = score; } </script> </body>

投稿2019/04/14 04:44

編集2019/04/14 04:47
mochizuki-pg

総合スコア192

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

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

deraono

2019/04/14 14:29

記述の方法につきまして詳細をお知らせいただきとても参考になりました。 教えていただいた記述につきまして、活用させていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問