为啥我的数组长度是1啊?大神指教 谢谢

来源:7-17 Array 数组对象

慧女神

2016-04-25 13:59

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>第三章习题-4</title>

</head>


<body>

<script>


function chengfa(want){

var show = new Array(want);

alert(show.length);

/*for(var i=1;i<show.length+1;i++)

   {

      show[i-1]=want*i;

   document.write(want+"*"+i+" = "+show[i-1]+"<br>");

   }*/

}


var Num;

while((Num=prompt("请输入数字",12))!=-1)

{

while(isNaN(Num)==true)

{

alert("请重新输入!");

var Num=prompt("请输入有效数字",12);

}

if(Num==-1)

{

break;

}


chengfa(Num);

}


</script>

</body>

</html>


写回答 关注

3回答

  • 逾时不候3172329
    2016-04-25 16:42:07
    已采纳

    不知道你是怎么想的,这么混乱。首先,12不是显示的,这是prompt(参数1,参数2)--第二个参数就是框里默认的显示值,还有,一次不要太多显示框,不然你会疯,你这就是一个除了-1,就不会终止的死循环,你前面都判断了,不是-1就会一直循环,所以出来循环时,他得知必然就是-1,所以意义何在?

    还有你定义的函数的参数就是数组的长度,所以你直接判断want这个参数是否传进去就可以了,我不知道你是否想要这样,你自己看看吧。有问题再问吧。

    <!DOCTYPE HTML>

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <title>window对象</title>

    <script type="text/javascript">

    function chengfa(want){

    var show = new Array(want);

    alert(want);

    for(var i=1;i<show.length+1;i++)

       {

            show[i-1]=want*i;

         document.write(want+"*"+i+" = "+show[i-1]+"<br>");

       }

    }

    var Num;

    while((Num=prompt("请输入数字"))==null)

    {

         var Num=prompt("请输入有效数字");

    }

    alert(Num);

    chengfa(Num);


    </script>

    </head>

    <body>

    <form>

    <input type="button" value="点击我,打开新窗口"  />

    </form>

    </body>

    </html>

    我不知道你在做什么,所以我稍微修改了一下,这是我的代码;

    慧女神

    谢谢你的答复 我已经找到问题所在了 因为prompt得到的是字符串并不是数值,所以Num只是字符串“12”,不是以数值12当作参数传给函数chengfa()的。所以只要在调用函数chengfa()之前将Num转换成数值就行啦,即Num=Number(Num) 他达到的效果就是输入n,输出n*1、n*2.......n*n结束

    2016-04-25 20:52:49

    共 1 条回复 >

  • 8MEI
    2016-04-25 17:38:03

    如果你想要自定义增加数组的长度,直接用show.length=Num就可以了呀。

    .length不仅是返回数组的长度,也可以设定数组的长度

        var show = new Array();
        show.length = Num;
        alert(show.length);
    G
    M
    T
    Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu
    AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu
    Text-to-speech function is limited to 100 characters

    慧女神

    谢谢你的答复 我已经找到问题所在了 因为prompt得到的是字符串并不是数值,所以Num只是字符串“12”,不是以数值12当作参数传给函数chengfa()的。所以只要在调用函数chengfa()之前将Num转换成数值就行啦,即Num=Number(Num) 他达到的效果就是输入n,输出n*1、n*2.......n*n结束

    2016-04-25 20:53:21

    共 1 条回复 >

  • yutou301
    2016-04-25 15:45:19

    我在函数中添加了alert(show[0]);发现会弹出12,我感觉应该是新建数组的时候只是把这个值当成第一个索引的值,没有新建相应长度的数组,解决的办法没有想到,说一下我的理解

    慧女神

    谢谢你的答复 我已经找到问题所在了 因为prompt得到的是字符串并不是数值,所以Num只是字符串“12”,不是以数值12当作参数传给函数chengfa()的。所以只要在调用函数chengfa()之前将Num转换成数值就行啦,即Num=Number(Num) 他达到的效果就是输入n,输出n*1、n*2.......n*n结束

    2016-04-25 20:51:36

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468195 学习 · 21891 问题

查看课程

相似问题