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内にいくつあっても、1つの値しか表示されません。誰かが私に少し助けを与えることができますか?ありがとう。

これは出力です:

    <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をクリックすると、2番目の青の値のみが表示されます。

4

3 に答える 3

0

私はあなたが何をしようとしているのかよくわかりません、それでも:

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

最初の行:ループ中に一意のIDを使用しているため、同じIDを持つ複数の要素を取得し、常にdocument.getElementByIdを持つ最初の要素になります。
2行目:隠しフィールドの値を取得する必要はありませんか?(つまり、#fakecolorであり、取得している#fakevalueではありません)。

于 2013-03-26T19:12:25.727 に答える
0

同じページに複数のIDがありgetElementById、失敗する原因になります。次のようにJavaScriptをループして構築してみませんか。

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

ただから移動する場合alertは、文字列パラメータを使用して色の値を受け入れるJavaScript関数を使用できます。

于 2013-03-26T19:15:10.333 に答える
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;
    }
    ?>

このように、非表示になっているすべての入力は、onclick関数と同じように異なるIDを持ちます。

Saludos;)

于 2013-03-26T19:17:17.947 に答える