2013-03-26 72 views
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点击时,它显示所述第二,蓝色的唯一的值。

+2

当存在多个项目时,生成的HTML和JavaScript的外观如何? – David 2013-03-26 19:04:51

+0

尝试每个隐藏的 – Hackerman 2013-03-26 19:12:15

回答

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

+0

编辑........ saludos XD – Hackerman 2013-03-26 19:26:57

+0

谢谢,这工作,但我如何获得像这样的值:<脚本类型= “文本/ JavaScript的”> \t功能somefunction(元件,optionTitle){ \t \t变种num = document.getElementById('fakecolor')。value;这里忽略了语法,我想如果你点击它suposed提醒每个输入隐藏的值的div来获取价值:) – user1822312 2013-03-26 19:38:19

+0

......现在你想其他功能......在一个按钮什么的?。 ...解释我做到一个;) – Hackerman 2013-03-26 19:58:18

0

我不很明白你正在试图做的,还是什么:

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

第一行:您使用的是唯一的ID,而循环,所以你会得到相同的ID和你的几个要素将总是以document.getElementById结束。
下联:你不应该得到的隐藏字段的值? (即#fakecolor而不是#fakevalue,因为你越来越)。

+0

diffrent ID我纠正了在这里显示的代码,谢谢。 – user1822312 2013-03-26 19:20:29

+0

你仍然有几次相同的ID。只需在id中添加一些内容(如** id =“fakecolor_ $ i”**,其中$ i每次通过循环时都会增加),这样您就可以获得所需的值。 – Loamhoof 2013-03-26 19:27:08

0

你有相同的页面,这将导致getElementById失败的多个ID。你为什么不循环,构建你的JavaScript像这样:

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

如果你只从alert移动,你可以有一个字符串参数任何JavaScript函数接受的颜色值。