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

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

詳細はこちら
JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

6022閲覧

Javascriptでフォームからの文字列に対してinnerHTMLを使って返事をしたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/11/10 12:34

###Javascriptでフォームからの文字列に対してinnerHTMLを使って返事をしたいです。

HTMLで作ったフォーム(form)から来た文字列に対して決まったものを表示するみたいなことがしたいです。
まず最初に「天気」という文字列をフォームに入れて送信したら天気の情報がiframeでかえってくるみたいなことがしたいです。
これで動くかな~と思って試してみたところ動きもしませんでした。

該当のソースコード

javascript

1function hanasu() { 2 target = document.getElementById('hennji'); 3 textbox1 = document.forms.fm2.id_textbox1.value; 4 var tenki = '天気'; 5 if (textbox1 == tenki) { 6 target.innerHTML('<iframe id="forecast_embed" type="text/html" frameborder="0" height="245" 7width="100%" src="http://forecast.io/embed/#lat=35.689487&lon=139.691706& 8name=Tokyo&units=si"></iframe>'); 9 } else { 10 target.innerHTML('<p>お答えできません。</p>'); 11 } 12 13}

HTML

1<FORM name="fm2"> 2 3 <input size="20" type="text" name="Z" style="background:#ffffff;" name="textbox" id="id_textbox1"> 4 <input type="button" value="送信" onclick="hanasu()" class="btn btn-primary"> 5 <div id="hennji" style="color: red;"> 6 7 </div> 8 9 </FORM>

試したこと

googlechromeで試しました


結構初心者なので、分かりやすく説明してくださると幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

innerHTMLはプロパティです。functionのように使ってはいけません。以下のようにすると…

JavaScript

1target.innerHTML('string');

Ctrl+Shift+Iで開くデベロッパーツールのConsoleタブで

text

1Uncaught TypeError: target.innerHTML is not a function

と怒られます。正しくは、

JavaScript

1target.innerHTML='string';

です。

確認可能なように修正したものを全文載せておきます。

HTML

1<script> 2function hanasu() { 3 target = document.getElementById('hennji'); 4 textbox1 = document.forms.fm2.id_textbox1.value; 5 var tenki = '天気'; 6 if (textbox1 == tenki) { 7 target.innerHTML='<iframe id="forecast_embed" type="text/html" frameborder="0" height="245" width="100%" src="http://forecast.io/embed/#lat=35.689487&lon=139.691706&name=Tokyo&units=si"></iframe>'; 8 } else { 9 target.innerHTML='<p>お答えできません。</p>'; 10 } 11} 12</script> 13<FORM name="fm2"> 14 <input size="20" type="text" name="Z" name="textbox" id="id_textbox1"> 15 <input type="button" value="送信" onclick="hanasu()"> 16 <div id="hennji"> 17 </div> 18</FORM>

これを拡張子.htmlで保存してダブルクリックすれば確認出来るはずです。
スタイルは抜きました。

投稿2019/11/10 20:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/11/11 12:46

おかげで成功しました。 ありがとうございました。
guest

0

id属性ではなくname属性で指定しますので

JavaScript

1textbox1 = document.forms.fm2.textbox.value;

ではないでしょうか。

投稿2019/11/10 13:01

shun-K

総合スコア508

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

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

kyoya0819

2019/11/10 13:08 編集

id属性,name属性が何方か一方でも混在していても取得できます。 https://www.ipentec.com/document/javascript-get-textbox-value の真ん中より少し下にある「補足」に書いてあります。 MDNはhttps://developer.mozilla.org/ja/docs/Web/API/Document/forms 仕様書はhttps://html.spec.whatwg.org/multipage/dom.html#dom-document-forms
shun-K

2019/11/11 14:22

そうなのですね! ツッコミありがとうございます。
guest

0

エラーコードはみましょうSyntaxError: Unexpected EOF(要は「改行すんなよ〜」ってことです)

Js

1 2function hanasu() { 3 target = document.getElementById('hennji'); 4 textbox1 = document.forms.fm2.id_textbox1.value; 5 var tenki = '天気'; 6 if (textbox1 == tenki) { 7 target.innerHTML = '<iframe id="forecast_embed" type="text/html" frameborder="0" height="245" width="100%" src="http://forecast.io/embed/#lat=35.689487&lon=139.691706&name=Tokyo&units=si"></iframe>'; //ここの改行と括弧を消す 8 } else { 9 target.innerHTML = '<p>お答えできません。</p>'; 10 } 11 12} 13

どうしても.innerHTMLで改行したいなら

ここをご参考になさってください。

投稿2019/11/10 12:55

編集2019/11/10 23:30
kyoya0819

総合スコア10429

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

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

退会済みユーザー

退会済みユーザー

2019/11/10 13:12 編集

エラーコードはどうやってみればよいですか? 使っているエディタはVisual Studio Codeを使っています。 それと、かいぎょうはしていないと思います。 teratailに投稿するときに、勝手に改行されたと思います。(多分です。多分)
退会済みユーザー

退会済みユーザー

2019/11/10 13:18

javascriptは動作しているのですか? 送信ボタンを押しても、反応しません。 enterを押したら、 Referred from Pen pooZvZM What happened? A link in this Pen has a missing `href` value, or this Pen is trying to change the document.location more details と出ました。
kyoya0819

2019/11/10 23:26 編集

innerHTMLを()で囲っているせいです。 空白で押して見てください。
退会済みユーザー

退会済みユーザー

2019/11/11 12:47

asuchi0819さん。 色々参考になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問