看板 Web_Design 關於我們 聯絡資訊
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://www.ptt.cc/bbs/Web_Design/M.1520856425.A.1F3.html
Ayukawayen: 你可以用array處理掉就好嗎? 03/12 20:21
diabloevagto: 不能這樣寫 03/12 20:25
qazwsx9006: 用一個object 來存? 03/12 21:20
Hevak: 1234這種有順序的用陣列去array.push就好... 03/12 21:44
Hevak: 名稱真的很重要的時候開一個變數用物件存+1 03/12 21:45
InfinityGate: 沒人會這樣寫吧 用物件或陣列 03/12 22:22
InfinityGate: 不過硬要這樣在外面宣告那些變數操作的話 03/12 22:23
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
Ayukawayen: getElementById(i) //不要引號 那樣會是字串"i" 03/13 23:27
froce: 剛好最近看到,不過個人還是建議你用個object去存。 03/14 17:34
froce: Debug的時候,要看全部的變數簡單多了,又沒有影響其他全域 03/14 17:37
froce: 變數的危險。 03/14 17:37
Gold740716: eval('num' + i + '= document.getElementById("i")) 03/14 20:03
chen5252: 你回問那樣的寫法是找出Id=“I”的東西,而不是找出變數 03/15 18:47
chen5252: i耶 03/15 18:47
chen5252: *回文 03/15 18:48
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
peanut97: 或用 let a = [];也行 03/19 12:23