フォームについてアドバイスお願いします



0   名前: 匿名 : 2007/03/06(火) 04:11  ID:8pMD6/fW sub-.G
最近Javascriptを勉強していて簡単なフォームを作ってみたんですが

プレビューで実行しようとするとエラーcは宣言されていませんと出ます

また数値入力後計算ボタンを押しても変化なく動きません

document.write()が違うようなんですがどこが違うのか

よくわからないのでどなたか初心者でもわかるように

説明できるかたいましたらアドバイスお願いします

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
<TITLE></TITLE>
<script type="text/javascript">
function keisan(){
var a = document.form1.kazu1.value;
var b = document.form1.kazu2.value;
var c = a*b
}
if(c<100) {
document.write("100未満");
}
else {
document.write("100以上");
}


</script></HEAD>
<BODY>

<form name="form1">
<input type="text" size="3" name="kazu1">
<input type="text" size="3" name="kazu2">
<input type="button" value="計算" onclick="keisan()"><br>
</form>

</BODY>
</HTML>

1   名前: 匿名 : 2007/03/06(火) 04:11  ID:mP6Wsu7G sub-99
> よくわからないのでどなたか初心者でもわかるように
> 説明できるかたいましたらアドバイスお願いします

「フォーム=計算させるもの」という訳ではありません。
まずはあなたが何をどうしたいのかを明記しないと
説明もアドバイスも出来ません。

例:2つのテキストボックスそれぞれに数を入れて、
  「計算ボタン」を押すと、その答えが表示される。
  なおかつ、その答えが100未満なら「100未満」のテキスト、
  100以上なら「100以上」のテキストを
  それぞれページ上に表示させたいのですが。

とか。
また、初心者だと思うのであれば、
if(c<100) のif文はさておき、
まず計算させる事だけを目標にしてみたらどうでしょうか?

2   名前: 匿名 : 2007/03/06(火) 04:11  ID:Z/T9lFdK sub-kJ
>>0
> エラーcは宣言されていません

中括弧({..})の範囲が変。if 文は keisan 関数の中になければならないわけで。

> document.write()が違うようなんですが

……まあ、何事も経験かな。それが望んでいた出力方法なら。


その他:
・簡略表記ではなく、document.forms['form1'].elements['kazu1'].value と正式表記を覚えた方が良い。
・form 要素の name 属性は id 属性に。どうしても name 属性を使いたければ両方併記する(name 属性は XHTML 1.1 で廃止)。
・そもそも、onclick="keisan(this.form)" と引数を渡せば、form 要素に名前を付ける必要なんてないよ。

はっきり言って、フォーム計算は意外に面倒くさい(インタフェースが貧弱、かつ古い因習を引きずってる)。個人的に「初心者」にはお勧めしない。

3   名前: たまごちゃん : 2007/03/06(火) 04:11  ID:V5DGgFjd sub-.G
皆様ありがとうございます
僕が作ろうとしてたのは1さんの例と同じものでしたが
2さんのアドバイスとおり訂正したら無事うまくいきました
感謝です

一覧へ戻る