鱼C论坛

 找回密码
 立即注册
查看: 5889|回复: 2

[已解决]原生js创立input问题

[复制链接]
发表于 2021-4-8 19:23:27 | 显示全部楼层 |阅读模式
5鱼币
请各位大神指点一下 在js代码的循环里面已经把输入的值放在列表里面保存了 但出了循环,列表里面保存的值又没有了 请问一下我应该怎么改?



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="ccc">
        <div id="bbb">
            <input type="text" id="aa" value="4">
            <input type="button" onclick="make()" value="make">
            
        </div>
        <input type="button" onclick="sum()" value="sum">
    </div>
    <script>
        function make() {
            var input = document.createElement("input");
            input.type="text";
            input.id="bb";
            input.value=0;
            bbb.appendChild(input);
        }

        function sum() {
            var s = [0,0];
            var i=1;
            for ( i=1;i<2;i++){
                s[i] = document.getElementById("bb").value;
                s[i]=parseInt(s[i]);
                console.log(s[i]);
            }
            console.log(s[i]);

            var a= document.getElementById("aa").value;
            a = parseInt(a);
            
            var c=a+s[i];
            //console.log(c);
        }
    </script>
</body>
</html>
最佳答案
2021-4-8 19:23:28
本帖最后由 肖-肖 于 2021-4-8 20:27 编辑

我帮你改好了,我的解释全都在注释里了,请查看!
分析如下:
ls19.png
代码如下:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>Document</title>
  8. </head>
  9. <body>
  10.     <div id="ccc">
  11.         <div id="bbb">
  12.             <input type="text" id="aa" value="4">
  13.             <input type="button" onclick="make()" value="make">
  14.             
  15.         </div>
  16.         <input type="button" onclick="sum()" value="sum"><!--这里6-->
  17.     </div>
  18.     <script>
  19.         function make() {
  20.             var input = document.createElement("input");
  21.             input.type="text";
  22.             input.id="bb";
  23.             input.value=0;
  24.             input.name="yiyang";//这里加一行
  25.             bbb.appendChild(input);
  26.         }

  27.         function sum() {
  28.             var s = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
  29.             var i=0;//从零开始
  30.             var sum=0;//因为你这个是求和的函数所以怎能没这个?
  31.             var inputText = document.getElementsByName("yiyang");//加了这一行
  32.             for ( i=0;i<inputText.length;i++){//改了这里
  33.                 //因为你这里想着获取新增的文本框的值,所以不能通过ID了,不妨i通过name吧
  34.                 s[i] = document.getElementsByName("yiyang")[i].value//改了这里
  35.                 s[i]=parseInt(s[i]);
  36.                 sum+=s[i];
  37.                 console.log(s[i]);
  38.             }
  39.             console.log(s[i]);//这里因为循环+1了所以为0

  40.             var a= document.getElementById("aa").value;
  41.             a = parseInt(a);
  42.             
  43.             sum+=a;//改了这里
  44.             console.log(sum);
  45.         }
  46.     </script>
  47. </body>
  48. </html>
复制代码

运行结果如下:很正确我觉得:


希望对你有用吧!
如果有不明白的,就直接回复,一起解决,我感觉我注释写的不够细

最佳答案

查看完整内容

我帮你改好了,我的解释全都在注释里了,请查看! 分析如下: 代码如下: 运行结果如下:很正确我觉得: 希望对你有用吧! 如果有不明白的,就直接回复,一起解决,我感觉我注释写的不够细
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-8 19:23:28 | 显示全部楼层    本楼为最佳答案   
本帖最后由 肖-肖 于 2021-4-8 20:27 编辑

我帮你改好了,我的解释全都在注释里了,请查看!
分析如下:
ls19.png
代码如下:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>Document</title>
  8. </head>
  9. <body>
  10.     <div id="ccc">
  11.         <div id="bbb">
  12.             <input type="text" id="aa" value="4">
  13.             <input type="button" onclick="make()" value="make">
  14.             
  15.         </div>
  16.         <input type="button" onclick="sum()" value="sum"><!--这里6-->
  17.     </div>
  18.     <script>
  19.         function make() {
  20.             var input = document.createElement("input");
  21.             input.type="text";
  22.             input.id="bb";
  23.             input.value=0;
  24.             input.name="yiyang";//这里加一行
  25.             bbb.appendChild(input);
  26.         }

  27.         function sum() {
  28.             var s = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
  29.             var i=0;//从零开始
  30.             var sum=0;//因为你这个是求和的函数所以怎能没这个?
  31.             var inputText = document.getElementsByName("yiyang");//加了这一行
  32.             for ( i=0;i<inputText.length;i++){//改了这里
  33.                 //因为你这里想着获取新增的文本框的值,所以不能通过ID了,不妨i通过name吧
  34.                 s[i] = document.getElementsByName("yiyang")[i].value//改了这里
  35.                 s[i]=parseInt(s[i]);
  36.                 sum+=s[i];
  37.                 console.log(s[i]);
  38.             }
  39.             console.log(s[i]);//这里因为循环+1了所以为0

  40.             var a= document.getElementById("aa").value;
  41.             a = parseInt(a);
  42.             
  43.             sum+=a;//改了这里
  44.             console.log(sum);
  45.         }
  46.     </script>
  47. </body>
  48. </html>
复制代码

运行结果如下:很正确我觉得:


希望对你有用吧!
如果有不明白的,就直接回复,一起解决,我感觉我注释写的不够细
ls20.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-8 20:10:25 | 显示全部楼层
var在for里没有作用域 内外不分
用let 可以使for和function一样具有作用域
去掉var i
把for ( i=1;i<2;i++)
改成
for (let i=1;i<2;i++)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 04:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表