2017-05-31 13 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 ?>视为不同的编码块。

相关问题