プロが教えるわが家の防犯対策術!

JavaScriptを学んでいます。初歩的な質問で大変申し訳ないのですが、どうしても自分で解決できずに困っています。
「1 ~ Nまでの整数の総和(1+2+3...+N)を求める関数を持つスクリプトを作成する」というのが目標なのですが、下記のようなスクリプトはinternet Explorerでは動作しません。MozillaFirefoxおよびOperaでは意図したとおり動作できることを確認しています。どこに誤りがあるのでしょうか?どなたかアドバイスをお願いいたします。

<html>
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>kadai</title>
<script type="text/javascript">
<!--
function keisan(num1,num2){
return num1*num2/2;
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
var num1 = prompt("1~入力データまでの総和を計算します。","");
var num2 = num1++;
alert("1 ~ 入力データまでの総和は、" + keisan(num1,num2) + "です。");
//-->
</script>
</body>
</html>

A 回答 (3件)

<script type="text/javascript">


function keisan(num){
return (num+1)*num/2;
}
var num = parseInt(prompt("1~入力データまでの総和を計算します。",""));
alert("1 ~ 入力データまでの総和は、" + keisan(num) + "です。");
</script>

とりあえず明示的に数値としてみては?
また、引数はわざわざ2つ作る必要ないですね・・・
    • good
    • 0
この回答へのお礼

早速のアドバイス、本当にありがとうございます。

parseInt()を使うべきだったのですね。引数をわざわざ二つとっていたのは、parseInt()を使わずにnum1+1と記述すると、単なる文字列と数値の結合になってしまい、加算が正しくされなかったためでした。
やむを得ずnum2をnum1++と定義していましたが、正しい記述をお教えいただけてもやもやした頭の中も少しすっきりしました。
超初歩的な質問にもかかわらずご回答いただき、どうもありがとうございました。わからないことだらけですが、めげずに勉強を続けます。

お礼日時:2008/07/23 01:27

<html><head><script type="text/JavaScript">


n=3;
kotae=0;
function keisan(){
for(i=1;i<=n;i++){kotae=kotae+i;}
alert("1~"+n+"までの総和は、"+kotae+"です。");}
keisan();
</script></head><body></body></html>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2008/07/23 20:24

No2です。

スミマセン 細かいミスありました。
No2問題なく動作しますが、kotae=0; 関数内に入れて下さい。
でないと 総和(1+2+3...+N)を求める関数 でなくなってしまいます。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。
アドバイスいただいた記述、早速自分でも試してみます。

お礼日時:2008/07/23 05:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!