<?php
foreach($_color_swatch as $_inner_option_id){
preg_match_all('/((#?[A-Za-z0-9]+))/', $_option_vals[$_inner_option_id]['internal_label'], $matches);
if ( count($matches[0]) > 0 ) {
$color_value = $matches[1][count($matches[0])-1];
?>
<li>
<input type="hidden" id="fakecolor" value="<?php echo $color_value;?>"/>
<div onclick="alert(document.getElementById('fakecolor').value);">
<img src="<?php echo $color_value;?>.png" /></div>
</li>
<?php
}
}
?>
这适用于使用$ color_value显示图像,但我需要将隐藏输入的值传递给另一个javascript函数。 当我点击div时,无论foreach内部有多少值,它都只显示一个值。 谁能给我一点帮助?感谢。
这是输出:
<li>
<input type="hidden" id="fakecolor" value="red"/>
<div onclick="alert(document.getElementById('fakecolor').value);"><img src="red.png"/></div>
</li>
<li>
<input type="hidden" id="fakecolor" value="blue"/>
<div onclick="alert(document.getElementById('fakecolor').value);"><img src="blue.png"/></div>
</li>
<li>
<input type="hidden" id="fakecolor" value="white"/>
<div onclick="alert(document.getElementById('fakecolor').value);"><img src="white.png"/></div>
</li>
<li>
<input type="hidden" id="fakecolor" value="green"/>
<div onclick="alert(document.getElementById('fakecolorx').value);"><img src="green.png"/></div>
</li>
但是当我点击每个div时,它只显示第二个蓝色的值。
答案 0 :(得分:0)
我不太明白你要做什么,仍然:
<input type="hidden" id="fakecolor" value="<?php echo $color_value;?>"/>
<div onclick="alert(document.getElementById('fakevalue').value);">
第一行:你在循环时使用了一个唯一的id,这样你就会得到几个具有相同id的元素,你总是会得到第一个带有document.getElementById的元素。
第二行:你不应该得到隐藏领域的价值吗? (即#fakecolor,而不是#fakevalue)。
答案 1 :(得分:0)
您在同一页面上有多个ID会导致getElementById
失败。你为什么不循环和构建你的JavaScript:
<div onclick="alert("<?php echo $color_value; ?>");">
如果您从alert
移开,您可以使用字符串参数的任何JavaScript函数来接受颜色值。
答案 2 :(得分:0)
尝试这样的事情:
<?php
$cont = 0;
foreach($_color_swatch as $_inner_option_id){
preg_match_all('/((#?[A-Za-z0-9]+))/', $_option_vals[$_inner_option_id]['internal_label'], $matches);
if ( count($matches[0]) > 0 ) {
$color_value = $matches[1][count($matches[0])-1];
?>
<li>
<input type="hidden" id="fakecolor<?php echo $cont; ?>" value="<?php echo $color_value;?>"/>
<div onclick="alert(document.getElementById('fakecolor<?php echo $cont; ?>').value);">
<img src="<?php echo $color_value;?>.png" /></div>
</li>
<?php
}
$cont = $cont + 1;
}
?>
这样每个隐藏的输入都有不同的id,与onclick函数相同。
Saludos;)