作者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/m.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