小羊也疯狂 2017-03-14 12:46 采纳率: 100%
浏览 817
已采纳

大家帮我看一下这个js 字符串转数字 出了什么问题

图片说明
图片说明
第一张图都还是“1” 用了个转换函数就成undefine了

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>task2-4</title>
    <style type="text/css" >
        form{
            width: 400px;
            margin-left: auto;
            margin-right: auto;
            margin-top: 20px;
        }
        div div{
            width: 30px;height: 30px;background-color: red;display: inline-block; margin: 5px;text-align: center;line-height: 30px;
        }
        #show{
            width: 500px;
            margin-left: auto;
            margin-right: auto;
        }
        #show p{
            margin: 0px;
            font-size: 150%;


        }
    </style>
</head>
<body>
<form >
    <input  id="numInput" type="text" value="请输入整数">
    <input  id="leftIn"  type="button" value="左侧入">
    <input  id="rightIn" type="button"  value="右侧入">
    <input  id="leftOut" type="button" value="左侧出">
    <input  id="rightOut" type="button" value="右侧出">
</form>
<div id ="show">

</div>
<script type="text/javascript">
    var show = document.getElementById("show");
    var myarr = new queue();
    var txtinput =document.getElementById("numInput");
    var rightIn = document.getElementById("rightIn");
    //点击行为引发3件事 更新数组,更新方块,更新里面的数字
    rightIn.onclick = function () {

        myarr.rightIn(numInput);
        draw("+");
        assignNum();
    }

    var rightOut = document.getElementById("rightOut");
    rightOut.onclick =function () {
        myarr.rightOut(numInput);
        draw("-");
        assignNum();
    }
    var leftIn = document.getElementById("leftIn");
    leftIn.onclick = function () {
        var numIn = parseInt(txtinput.value);
        myarr.leftIn(numIn);
        draw("+");
        assignNum();
    }

    var leftOut = document.getElementById("leftOut");
    leftOut.onclick =function () {
        myarr.leftOut(numInput);
        draw("-");
        assignNum();
    }





    //给出 两端能进能出队列类的方法和属性的定义
    //假设数组的从左往右分别是 arr[0],arr[1],arr[2].....
    function queue() {
        var arr =[];
        var length=0;
        this.rightOut=function () {
            arr[this.length-1]=null;
            this.length--;
        };
        this.rightIn=function (num) {
            arr[this.length]=num;
            this.length++;
        };
        this.leftIn=function (num) {
            if(length==0){arr[0]=num;}else{
                for(var i=this.length-1; i>0;i--){
                arr[i+1] = arr[i];
            }
                arr[0] = num;


            }
            this.length++;
        };
        this.leftOut=function () {
            for(var i=0; i<this.length-1;i++){
                arr[i] = arr[i+1];
            }

            this.length--;
        };
        this.size=function () {
            return this.length;
        };

        //index是数组下标
        this.remove=function (index) {
            for(var i=index; i<this.length-1;i++){
                arr[i] = arr[i+1];
            }

            this.length--;
        };
    }
    //定义一个利用dom画图的方法 传入参数"+" 增加一个正方形 传入一个"-" 减少一个正方形

    function draw(what) {
        if(what=="+"){
            var div_add = document.createElement("div");
            show.appendChild(div_add);
        }else{
            var div_del =show.getElementsByTagName("div")[0];
            show.removeChild(div_del);
        }
    }
    //定义一个函数 将数组的值传入每个div中
    function assignNum() {
        var divs =show.getElementsByTagName("div");
        for(var i =0;i<divs.length;i++){
            divs[i].firstChild.nodeValue = myarr[i].toString();
        }
    }

</script>
</body>
</html>
  • 写回答

4条回答 默认 最新

  • 当作看不见 2017-03-14 16:16
    关注

    稍微修改了一下,不过没有见到哪里报错了 ,你这个代码还有不少逻辑问题。 有空再说

     <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>task2-4</title>
        <style type="text/css" >
            form{
                width: 400px;
                margin-left: auto;
                margin-right: auto;
                margin-top: 20px;
            }
            div div{
                width: 30px;height: 30px;background-color: red;display: inline-block; margin: 5px;text-align: center;line-height: 30px;
            }
            #show{
                width: 500px;
                margin-left: auto;
                margin-right: auto;
            }
            #show p{
                margin: 0px;
                font-size: 150%;
    
    
            }
        </style>
    </head>
    <body>
    <form >
        <input  id="numInput" type="number" value="" placeholder="请输入整数">
        <input  id="leftIn"  type="button" value="左侧入">
        <input  id="rightIn" type="button"  value="右侧入">
        <input  id="leftOut" type="button" value="左侧出">
        <input  id="rightOut" type="button" value="右侧出">
    </form>
    <div id ="show">
    
    </div>
    <script type="text/javascript">
        var show = document.getElementById("show");
        var myarr = new queue();
        var txtinput =document.getElementById("numInput");
        var rightIn = document.getElementById("rightIn");
        //点击行为引发3件事 更新数组,更新方块,更新里面的数字
        rightIn.onclick = function () {
    
            myarr.rightIn(numInput);
            draw("+");
            assignNum();
        }
    
        var rightOut = document.getElementById("rightOut");
        rightOut.onclick =function () {
            myarr.rightOut(numInput);
            draw("-");
            assignNum();
        }
        var leftIn = document.getElementById("leftIn");
        leftIn.onclick = function () {
            var numIn = parseInt(txtinput.value);
            myarr.leftIn(numIn);
            draw("+");
            assignNum();
        }
    
        var leftOut = document.getElementById("leftOut");
        leftOut.onclick =function () {
            myarr.leftOut(numInput);
            draw("-");
            assignNum();
        }
    
        //给出 两端能进能出队列类的方法和属性的定义
        //假设数组的从左往右分别是 arr[0],arr[1],arr[2].....
        function queue() {
            var arr =[];
            var length=0;
            this.rightOut=function () {
                arr.pop();
            };
            this.rightIn=function (num) {
                arr.push(num);
            };
            this.leftIn=function (num) {
                arr.unshift(num)
            };
            this.leftOut=function(){
             arr.shift()
            };
            this.size=function () {
                return arr.length;
            };
    
            //index是数组下标
            this.remove=function (index) {
                arr.splice(index,1);
            };
        }
        //定义一个利用dom画图的方法 传入参数"+" 增加一个正方形 传入一个"-" 减少一个正方形
    
        function draw(what) {
            if(what=="+"){
                var div_add = document.createElement("div");
                div_add.style.backgroundColor = randomColor();
                show.appendChild(div_add);
            }else{
                var div_del =show.getElementsByTagName("div")[0];
                show.removeChild(div_del);
            }
        }
        //定义一个函数 将数组的值传入每个div中
        function assignNum() {
            var divs =show.getElementsByTagName("div");
            for(var i =0;i<divs.length;i++){
                if(!!myarr[i]){
                  divs[i].firstChild.nodeValue = myarr[i].toString();
                }
    
            }
        }
        function randomColor(){
            var str = "rgb("
            for (var i=0;i<3;i++) {
                str+= Math.round( Math.random()*255)+","
            }
             str = str.substring(0,str.length-2)+")";
             console.log(str);
             return str;
        }
    </script>
    </body>
    </html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题