iT邦幫忙

0

javascript 取得迴圈的值

介面可參考下圖,按下"按我"按鈕時,會彈出提醒視窗顯示右邊的text裡的數字,但目前都是顯示0,
請問應該如何改進?謝謝/images/emoticon/emoticon41.gif
https://ithelp.ithome.com.tw/upload/images/20171006/20106496Cmi6OZcxoF.jpg

程式碼如下:

<script>
function getFor($i) {
	var s = document.getElementById("getForOutput").value;
	alert(s);
}
</script>

<?php
for ($i=0;$i<10;$i++)
{
  echo
  "<button style=cursor:pointer id=buttonCheck onclick=javascript:getFor('$i')><font face=微軟正黑體>按我</font></button>
  <input type='text' readonly='readonly' value='$i' id='getForOutput'><br>";
}
?>
看更多先前的討論...收起先前的討論...
weiclin iT邦高手 7 級 ‧ 2017-10-06 13:43:51 檢舉
你的 getFor 那個參數沒用到
還有你的 input id 重複了
fillano iT邦超人 1 級 ‧ 2017-10-06 13:43:59 檢舉
id不能一樣啦...這樣只能取到第一個input,所以都是0。
純真的人 iT邦研究生 5 級 ‧ 2017-10-06 13:45:45 檢舉
請改用getElementsByName比較快唷~
小斑 iT邦新手 5 級 ‧ 2017-10-06 15:07:01 檢舉
感謝各位大師的幫忙
黃彥儒 iT邦新手 2 級 ‧ 2017-10-06 15:51:44 檢舉
有人真的按下去的嗎XDD
黃彥儒 iT邦新手 2 級 ‧ 2017-10-06 15:51:45 檢舉
有人真的按下去的嗎XDD
fillano iT邦超人 1 級 ‧ 2017-10-06 21:17:15 檢舉
等他碰到問題再說吧XDD
dajeguy iT邦新手 5 級 ‧ 2017-10-12 11:37:32 檢舉
因為你的input id 都是 getForOutput, 所以當你用 getElementById的時候, javascript只會抓第一個 input 的值, 也就是0, 你應該要給 input id 編號 getForOutput_0, getForOutput_1, .... 依此類推 , 你的 getFor 方法有傳入 $i , 可以
用 s = document.getElementById("getForOutput_"+ $i).value , 這樣就可以抓到這個編號下的input的 value
dajeguy iT邦新手 5 級 ‧ 2017-10-12 11:41:03 檢舉
如果有10個input 他們id 都是一樣的, 你用選擇器選這個id的時候, 永遠只會被視為選到第一個 input , 而且id重複也是不好的寫法喔,id應該要是唯一的
小斑 iT邦新手 5 級 ‧ 2017-10-12 16:50:31 檢舉
好的,謝謝指教

2 個回答

1
純真的人
iT邦研究生 5 級 ‧ 2017-10-06 14:52:11
最佳解答

你要的是應該是這個~

<script>
    function getFor(Obj) {
        var Obj_Str = document.getElementsByName("buttonCheck");
        var getForOutput = document.getElementsByName("getForOutput");
        var Count = Obj_Str.length;
        for (i = 0; i < Count; i++) {
            if (Obj_Str[i] == Obj) {
                alert(getForOutput[i].value);
            }
        }
    }
</script>

<?php
for ($i=0;$i<10;$i++)
{
  echo
  "<button style=cursor:pointer name=buttonCheck onclick=getFor(this)><font face=微軟正黑體>按我</font></button>
  <input type='text' readonly='readonly' value='$i' name='getForOutput'><br>";
}
?>

然後原來應該是這個吧@@

<script>
function getFor(Num) {
	alert(Num);
}
</script>

<?php
for ($i=0;$i<10;$i++)
{
  echo
  "<button style=cursor:pointer id=buttonCheck onclick=javascript:getFor('$i')><font face=微軟正黑體>按我</font></button>
  <input type='text' readonly='readonly' value='$i' id='getForOutput'><br>";
}
?>
小斑 iT邦新手 5 級 ‧ 2017-10-06 15:05:49 檢舉

是的/images/emoticon/emoticon42.gif
太感謝您了/images/emoticon/emoticon51.gif

0
froce
iT邦新手 3 級 ‧ 2017-10-06 14:07:18

要取旁邊的值不用這麼麻煩,還用迴圈跑。
jQuery歷遍。

$('button').click(function(){
    alert($(this).next().val());
});

純 javascript 使用nextSibling / nextElementSibling。
https://www.w3schools.com/jsref/prop_node_nextsibling.asp


奇怪,上面明明有大神在,那輪得到我回答這個啊。XD

看更多先前的回應...收起先前的回應...
純真的人 iT邦研究生 5 級 ‧ 2017-10-06 14:49:06 檢舉

那他也要先導入JQ函數~
不然應該他試不出來@@

froce iT邦新手 3 級 ‧ 2017-10-06 15:01:25 檢舉

所以下面我有寫nextSibling啊。

小斑 iT邦新手 5 級 ‧ 2017-10-06 15:07:26 檢舉

感謝各位大師的幫忙

baida0630 iT邦新手 4 級 ‧ 2017-10-06 15:58:22 檢舉

他有TAG JQ應該是沒這個問題

純真的人 iT邦研究生 5 級 ‧ 2017-10-06 16:25:35 檢舉

呵呵~是怕有人不懂什麼叫JQ啦~就直接複製貼上@@

vt167098 iT邦新手 5 級 ‧ 2017-10-11 09:30:49 檢舉

不知道發文樓主是否知道問題出在那裡了嗎?

小斑 iT邦新手 5 級 ‧ 2017-10-12 16:51:04 檢舉

知道了,謝謝

我要發表回答

立即登入回答