[問題] javascript迴圈中變數名稱為字串加變數

看板Web_Design作者 (壞貓咪)時間6年前 (2018/03/12 20:07), 6年前編輯推噓7(7012)
留言19則, 9人參與, 6年前最新討論串1/1
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

03/12 20:21, 6年前 , 1F
你可以用array處理掉就好嗎?
03/12 20:21, 1F

03/12 20:25, 6年前 , 2F
不能這樣寫
03/12 20:25, 2F

03/12 21:20, 6年前 , 3F
用一個object 來存?
03/12 21:20, 3F

03/12 21:44, 6年前 , 4F
1234這種有順序的用陣列去array.push就好...
03/12 21:44, 4F

03/12 21:45, 6年前 , 5F
名稱真的很重要的時候開一個變數用物件存+1
03/12 21:45, 5F

03/12 22:22, 6年前 , 6F
沒人會這樣寫吧 用物件或陣列
03/12 22:22, 6F

03/12 22:23, 6年前 , 7F
不過硬要這樣在外面宣告那些變數操作的話
03/12 22:23, 7F

03/12 22:24, 6年前 , 8F
可以 window["num"+i] = ...
03/12 22:24, 8F
改成利用array的方式 var num; for (var i = 1; i < 5; i++) { num[i] = document.getElementById("i").value; } 不過仍然不行@@ Uncaught TypeError: Cannot read property 'value' of null

03/13 23:27, 6年前 , 9F
getElementById(i) //不要引號 那樣會是字串"i"
03/13 23:27, 9F

03/14 17:33, 6年前 , 10F

03/14 17:34, 6年前 , 11F
剛好最近看到,不過個人還是建議你用個object去存。
03/14 17:34, 11F

03/14 17:37, 6年前 , 12F
Debug的時候,要看全部的變數簡單多了,又沒有影響其他全域
03/14 17:37, 12F

03/14 17:37, 6年前 , 13F
變數的危險。
03/14 17:37, 13F

03/14 20:03, 6年前 , 14F
eval('num' + i + '= document.getElementById("i"))
03/14 20:03, 14F

03/15 18:47, 6年前 , 15F
你回問那樣的寫法是找出Id=“I”的東西,而不是找出變數
03/15 18:47, 15F

03/15 18:47, 6年前 , 16F
i耶
03/15 18:47, 16F

03/15 18:48, 6年前 , 17F
*回文
03/15 18:48, 17F

03/15 18:50, 6年前 , 18F
所以他找不到東西,你後面又接.value就會出錯
03/15 18:50, 18F
好喔! 後來有發現不能用"i" 改成i 可是還是不行 最後發現問題似乎是 我用宣告錯誤了 var num; 改成 var num = new array 就可以了@@ 謝謝大家! ※ 編輯: wavek (122.118.199.69), 03/17/2018 11:40:19

03/19 12:23, 6年前 , 19F
或用 let a = [];也行
03/19 12:23, 19F
文章代碼(AID): #1Qfcrf7p (Web_Design)