作者wavek (坏猫咪)
看板Web_Design
标题[问题] javascript回圈中变数名称为字串加变数
时间Mon Mar 12 20:07:02 2018
for (var i = 1; i < 5; i++) {
"num"+i = document.getElementById("i").value;
}
程式码大致如上
我有几个input 其中ID就是1,2,3,4这样
我想说定变数名称num1,num2,num3,num4来做後续处理
不过跳出错误说 "num"+i这样不行
爬文google很多 可能用错关键字
找不到..似乎没有看到有人这样用
还是说其实这个用法是错误的? 实际写网页不该用这种表示式?
ptt爬文有发现有人提出相同问题
不过看起来前人没有得到解答XD
有推文回说使用eval()
目前试过eval("num"+i) 跟 evla("'num'+i")
都没办法
请问一下该如何写才正确
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.171.92.188
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1520856425.A.1F3.html
1F:推 Ayukawayen: 你可以用array处理掉就好吗? 03/12 20:21
2F:推 diabloevagto: 不能这样写 03/12 20:25
3F:推 qazwsx9006: 用一个object 来存? 03/12 21:20
4F:→ Hevak: 1234这种有顺序的用阵列去array.push就好... 03/12 21:44
5F:→ Hevak: 名称真的很重要的时候开一个变数用物件存+1 03/12 21:45
6F:→ InfinityGate: 没人会这样写吧 用物件或阵列 03/12 22:22
7F:→ InfinityGate: 不过硬要这样在外面宣告那些变数操作的话 03/12 22:23
8F:→ InfinityGate: 可以 window["num"+i] = ... 03/12 22:24
改成利用array的方式
var num;
for (var i = 1; i < 5; i++) {
num[i] = document.getElementById("i").value;
}
不过仍然不行@@
Uncaught TypeError: Cannot read property 'value' of null
9F:推 Ayukawayen: getElementById(i) //不要引号 那样会是字串"i" 03/13 23:27
11F:→ froce: 刚好最近看到,不过个人还是建议你用个object去存。 03/14 17:34
12F:→ froce: Debug的时候,要看全部的变数简单多了,又没有影响其他全域 03/14 17:37
13F:→ froce: 变数的危险。 03/14 17:37
14F:推 Gold740716: eval('num' + i + '= document.getElementById("i")) 03/14 20:03
15F:推 chen5252: 你回问那样的写法是找出Id=“I”的东西,而不是找出变数 03/15 18:47
16F:→ chen5252: i耶 03/15 18:47
17F:→ chen5252: *回文 03/15 18:48
18F:→ chen5252: 所以他找不到东西,你後面又接.value就会出错 03/15 18:50
好喔! 後来有发现不能用"i"
改成i 可是还是不行
最後发现问题似乎是
我用宣告错误了
var num;
改成
var num = new array 就可以了@@
谢谢大家!
※ 编辑: wavek (122.118.199.69), 03/17/2018 11:40:19
19F:推 peanut97: 或用 let a = [];也行 03/19 12:23