只显示隐藏输入中的一个值

时间:2013-03-26 19:03:18

标签: php javascript forms

<?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时,它只显示第二个蓝色的值。

3 个答案:

答案 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;)