2013-03-26 65 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函數接受的顏色值。