2017-05-31 14 views
1

我目前有一個PHP腳本,效果很好,但是當涉及到添加JavaScript時,我遇到了一個小問題。如何添加對多個主題結果的JavaScript響應

我想要實現的結果是在一個PHP foreach循環中顯示效果很好,但我有一個onclick JavaScript函數,它假設在foreach循環的結果顯示在同一行的結果,但相反,它只改變一個結果的當前值。

所以我目前有四種車型的價格。當選擇一個時,我希望名稱和價格顯示在[echo「Select:」之上。 $ name]行。

我當前的代碼是這樣的:

<?php 
    $cars = array(
    array("Volvo",40.000), 
    array("BMW",45.000), 
    array("Saab",50.000), 
    array("Land Rover",60.000) 
    ); 

foreach($cars as $key){ 
    $name = $key[0]; 
    $price = $key[1]; 

    echo "<span id='$name'></span> <span id='$price'></span><br />"; 
    echo "Select: " . $name; 
?> 
<script type="text/javascript"> 
    function grabData(d){ 
     document.getElementById("<?php echo $price; ?>").innerHTML = d.getAttribute("data-price"); 
     document.getElementById("<?php echo $name; ?>").innerHTML = d.getAttribute("data-title"); 
    } 
</script> 
<input onclick="grabData(this);" type="radio" name="rate" data-price="<?php echo $key[1]; ?>" data-title="<?php echo $key[0]; ?>"><br /> 
<?php 
} 
?> 

因此,如果選擇了所有選項,最終的結果應該是這樣的:

Volvo 40 
Volvo: 
BMW 45 
BMW: 
Saab 50 
Saab: 
Land Rover 60 
Land Rover: 

任何幫助或方向是高度讚賞。謝謝!

+0

您真的使用價格作爲顯示價格的跨度ID嗎?如果你有兩輛價格相同的車? – Barmar

回答

2

循環只是反覆定義相同的功能。當它被調用時,它將調用最後一個定義,而不是該循環中該元素的定義。

您應該只定義一次函數,並添加其他參數。然後你可以用每個元素的不同參數來調用它。

<script type="text/javascript"> 
function grabData(d, priceid, nameid){ 
    document.getElementById(priceid).innerHTML = d.getAttribute("data-price"); 
    document.getElementById(nameid).innerHTML = d.getAttribute("data-title"); 
} 
</script> 

<?php 
$cars = array(
       array("Volvo",40.000), 
       array("BMW",45.000), 
       array("Saab",50.000), 
       array("Land Rover",60.000) 
      ); 

foreach($cars as $key){ 
    $name = $key[0]; 
    $price = $key[1]; 

    echo "<span id='$name'></span> <span id='$price'></span><br />"; 
    echo "Select: " . $name; 
    ?> 
    <input onclick="grabData(this, '<?php echo $price; ?>', '<?php echo $name; ?>');" type="radio" name="rate" data-price="<?php echo $key[1]; ?>" data-title="<?php echo $key[0]; ?>"><br /> 
    <?php 
} 
?> 
0

將腳本部分設置爲變量中的字符串並使用php進行回顯,php將每個<?php ?>視爲不同的編碼塊。

相關問題