2012-08-01 39 views
0

多个值我在PHP中的循环,回声出<input type="hidden" id="lol" value=$id />的Javascript同一ID

每次循环都要经过我得到的隐藏的输入字段,你可以了解一个新的价值。

现在,我试图抓住每个这些项目的价值,并获得它与Javascript和SAJAX。 即时使用的JavaScript工程,但!它只抓住的第一个值(因为ID是每个输入相同)

Javscript:

function Showbooking() { 
    id = document.getElementById('lol').value; 
    x_showBookingForm(id, do_showBookingForm); 
} 
function do_showBookingForm(html) { 
    openPopup(600, 550, html); 
} 

正如你所看到的IM打开与JavaScript的藏汉一个弹出并出口值到该弹出窗口。

所以在每个弹出窗口中,我都会得到相同的值(来自第一个输入的值)。

如何解决此问题?

+4

“id”属性在页面上必须唯一(如果它存在的话)。也就是说,你不能分享“id”值。如果您想要“分类”元素的效果,则可以使用“类”属性。 – Pointy 2012-08-01 13:20:24

+0

如果你没有递增循环中的值,它会如何变成除了相同的东西?你的意思是使用'$ id [$ i]'或其他这样的变量吗? – Fluffeh 2012-08-01 13:21:51

+0

没有即时消息不使用$ id。$ i。我试图得到一些帮助如何解决这个问题。这可能是一个解决方案,但是,有没有其他方法? – oBo 2012-08-01 13:23:17

回答

5
  1. 更改ID命名
  2. 使用document.getElementsByName和循环
var lols = document.getElementsByName("lol"); 
var vals=[]; 
for (var i=0, n=lols.length;i<n;i++) { 
    vals.push(lols[i].value); 
} 
alert(vals.join(",")); 
+0

“name”属性是一个很好的建议。 – Pointy 2012-08-01 13:24:54

+0

小心使用'name'来分组非无线电输入。 iirc,'name'是用来识别发布数据的。当然,如果你不关心在服务器端重新获得这些东西,这并不重要......但可能值得一提。 – canon 2012-08-01 13:31:35

+0

当我使用名称或类名时,我得到值Undefined。 id = document.getElementsByClassName('lol').value; – oBo 2012-08-01 13:31:44

2

getElementById说:元素而不是元素因为它返回只有一个项目。 id应该是独一无二的。您可以采取以下措施:

var inputs = document.getElementsByTagName("input"); 
var values = []; 
for(var i=0;i<inputs.length;i++){ 
    if(inputs[i].type === "hidden"){ 
     values.push(inputs[i].value; 
    } 
}