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

4

3 回答 3

0

您在同一页面上有多个 ID,这将导致getElementById失败。你为什么不像这样循环和构造你的 JavaScript:

<div onclick="alert("<?php echo $color_value; ?>");">

如果您从 just 开始,alert您可以使用带有字符串参数的任何 JavaScript 函数来接受颜色值。

于 2013-03-26T19:15:10.333 回答
0

我不太明白你要做什么,仍然:

<input type="hidden" id="fakecolor" value="<?php echo $color_value;?>"/>
<div onclick="alert(document.getElementById('fakevalue').value);">

第一行:您在循环时使用了唯一的 id,因此您将获得多个具有相同 id 的元素,并且您将始终以 document.getElementById 结束第一个元素。
第二行:你不应该得到隐藏字段的值吗?(即#fakecolor,而不是你得到的#fakevalue)。

于 2013-03-26T19:12:25.727 回答
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 函数相同。

萨卢多斯 ;)

于 2013-03-26T19:17:17.947 回答