Re: [請益] form控制項陣列傳值結果?

看板PHP作者 (恐八挖)時間14年前 (2011/10/06 11:54), 編輯推噓2(2016)
留言18則, 3人參與, 最新討論串2/2 (看更多)
: → KawasumiMai:不好意思接下來又有另外的延續問題 10/06 11:18 : → KawasumiMai:剛剛依照tnstiger大的方法,php已經取得正確 10/06 11:18 : → KawasumiMai:attr出來的結果是完美的Array,不過這次出在js 10/06 11:18 : → KawasumiMai:原先的html因為關聯性的關係,checkbox有呼叫js 10/06 11:19 : → KawasumiMai:第一個checkbox是皆否,呼叫的是取消後面所有checkbox 10/06 11:20 : → KawasumiMai:document.form.attr[i].checked = false 10/06 11:20 : → KawasumiMai:其他呼叫的是取消第一個皆否checkbox 10/06 11:20 : → KawasumiMai:document.form.attr[0].checked 10/06 11:20 : → KawasumiMai:這下變成js失效了,因為名稱變成attr[] 10/06 11:20 : → KawasumiMai:而用attr[][i]跟attr[][0]取代也失敗,請問該怎麼辦 10/06 11:21 我用比較笨的方法解決 (不確定有沒有比較好的) <script type="text/javascript"> function chkbox(obj) { if(obj == document.getElementsByName("attr[]")[0]) { for(var i = 1 ; i < document.getElementsByName("attr[]").length ; i++ ) { document.getElementsByName("attr[]")[i].checked = false; } } else { document.getElementsByName("attr[]")[0].checked = false; } } </script> <style type="text/css"> label { display:block;} </style> <body> <form name="chkform"> <label><input type="checkbox" onclick="chkbox(this)" name="attr[]" value="123" />all cancel</label> <label><input type="checkbox" onclick="chkbox(this)" name="attr[]" />1</label> <label><input type="checkbox" onclick="chkbox(this)" name="attr[]" />2</label> <label><input type="checkbox" onclick="chkbox(this)" name="attr[]" />3</label> <label><input type="checkbox" onclick="chkbox(this)" name="attr[]" />4</label> </form> </body> JS 對於同 name 的物件會自動轉為陣列, [] 對他來說好像認不出來 所以改用 getElementsByName 抓 其中為了比對是否為第一個,我把產生事件的物件丟進去判斷 應該有更好的寫法,我單純都用原始的 dom 寫而已 ※ 補充一個抓的方法,如果不要用 getElement 的方式的話,改用 document.chkform.elements('attr[]')[0] 也可以 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.45.83

10/06 11:54, , 1F
ya , 這篇是 100 篇= =
10/06 11:54, 1F
※ 編輯: kerash 來自: 114.34.45.83 (10/06 11:58)

10/06 12:00, , 2F
感謝回應,所以簡單的說,attr[]要另外框起來再接[0]
10/06 12:00, 2F

10/06 12:00, , 3F
只要在下把原文刪掉,隔天這篇就變99了XD(誤
10/06 12:00, 3F

10/06 12:01, , 4F
PS.. 用後面的方法,在 obj == document.. 比對的地方會錯
10/06 12:01, 4F

10/06 12:01, , 5F
要改用其他的方法
10/06 12:01, 5F

10/06 12:01, , 6F
你刪掉我不會變 99 ,我是另發,不會整串刪啊~
10/06 12:01, 6F

10/06 12:02, , 7F
在下用document.form.elements('attr[]')[i].checked
10/06 12:02, 7F

10/06 12:02, , 8F
就解決了
10/06 12:02, 8F

10/06 12:03, , 9F
在下是說刪掉原討論串,隔周之後系統會清除那個洞
10/06 12:03, 9F

10/06 12:03, , 10F
後面的文章會遞補,所以這篇會變99這樣,反正是說笑的
10/06 12:03, 10F

10/06 12:03, , 11F
..XD 我是說我發的第一百篇
10/06 12:03, 11F

10/06 12:04, , 12F
剛剛測試過沒有問題,紅字的方法很棒
10/06 12:04, 12F

10/06 12:04, , 13F
喔...對喔,都已經到一萬四了在下在耍什麼蠢(死
10/06 12:04, 13F

10/06 12:04, , 14F
一萬一千四...
10/06 12:04, 14F

10/06 12:04, , 15F
不客氣,我也剛剛才想起紅字的方法
10/06 12:04, 15F

10/06 12:13, , 16F
document.chkform['attr[]'][0] 更簡單的做法
10/06 12:13, 16F

10/06 12:15, , 17F
wow,竟然直接當作form的子物件呼叫了....
10/06 12:15, 17F

10/06 12:16, , 18F
scribeTW大的方法也成功了,連element都不用打了....
10/06 12:16, 18F
文章代碼(AID): #1EZIPUtD (PHP)
討論串 (同標題文章)
文章代碼(AID): #1EZIPUtD (PHP)