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

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

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

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

HTML

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

Q&A

解決済

2回答

1734閲覧

javascript及びhtmlのformタグについて

main4

総合スコア24

JavaScript

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

HTML

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

0グッド

1クリップ

投稿2015/11/25 06:14

HTML及びjavascriptのformタグの扱いについて分からないので、ご教授お願い致します。

3つの入力フォームの値を計算し、別のフォームに計算した値を入れるプログラムの部品を作りました。

入力フォームaaaとbbbはページ上部、cccとdddはページ下部に配置するつもりですが、ページ中部には他の関数で使用するためのformタグがあるためaaaとbbbを分割したいです。

form method="get"タグ内の、入力フォームaaaと入力フォームbbbを分割し、正しく計算ができるように動作させるにはどうすればよいのでしょうか。

勉強中なため、言葉足らずでプログラムもお見苦しいかもしれませんが、どうぞよろしくお願い致します。

以下コード

js部分

function calcu(c) {
aaa = eval(c.x.value);
bbb = eval(c.y.value);
ccc = eval(c.z.value);
c.ddd.value = Math.floor(aaa + bbb + ccc);
}

html部分

<form method="get"> 入力フォームaaa <input type="text" name="x"> 入力フォームbbb <input type="text" name="y"> 入力フォームccc <input type="text" name="z"> <input type="button" value="算出"onclick="calcu(this.form)"> <input type="text" name="ddd"> </form>

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

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

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

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

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

guest

回答2

0

「都合上、1つの<form>内に関係するフォーム部品を配置する事が出来ないが、どうしたらいいか」という事かと思います。
<input><select>等のフォーム部品は必ず<form>要素の中で使わなければならない……という事はありません

今回の場合、対象の<input>に入力された値を得る為には、document.getElementById()やdocument.getElementByName()が利用できます。

例えば、以下のような<input>が在ったとして、

HTML

1<input type="text" name="x">

それへの入力値を得るには、以下のようにします。

JavaScript

1var element = document.getElementByName('x'); 2var result = element.value;

後は、これを応用するだけですね。

質問内容からは外れますが、eval()の危険性についてはmaisumakunさんが仰る通り。nameかidかは、その違いさえ把握していれば、どちらでも良いとか思います(この回答では質問に合わせnameを利用した方法を提示していますが、今回の例ではidの方が適切かなとは思います)。

投稿2015/11/25 09:20

AmaiSaeta

総合スコア105

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

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

main4

2015/11/26 08:28

初歩的なことだったかもしれませんが、回答ありがとうございます。しっかり勉強していきたいと思います
guest

0

ベストアンサー

フォーム要素をnameで取得するのは、あまり現代では使われなくなっている書き方です。IDを定義して、document.getElementByIdで取得すれば、フォームの中にあろうが外にあろうが関係なくなります。

あと、evalを使うということは、javaScriptでできることは何でもさせてしまうのと同じことになります。数字の文字列を数値に変換したいだけならfoo.value - 0で実現できます。

投稿2015/11/25 06:26

maisumakun

総合スコア145183

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

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

main4

2015/11/26 08:26

なるほど。nameとevalは使わないほうが良いのですね。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問