-1

我有这个代码:

<?php
$animals = array('cat', 'dog', 'mouse', 'elephant');
for($i=0, $n = count($animals); $i++){
    echo $animals[$i]. '<input type="submit" name="remove" value="remove"/><br/>';
    if(isset($_POST['remove'])){
        unset($animals[$i]);
    }
}
?>

当我单击删除按钮时,没有任何反应。任何的想法?

4

2 回答 2

1

如果您要将“删除”作为每个按钮的值,那么最简单的方法是为name attribute. 发送后$_POST,您可以遍历remove数组并根据键取消设置任何内容。

<?php
$animals = array('cat', 'dog', 'mouse', 'elephant');
if(isset($_POST['remove']) && is_array($_POST['remove'])){
    foreach($_POST['remove'] as $k=>$remove){
        unset($animals[$k]);
    }
}

echo '<form method="post" action="./">';
foreach($animals as $key=>$animal){
    echo $animal. '<input type="submit" name="remove['.$key.']" value="remove"><br/>';
}
echo '</form>';?>

注意:有很多方法可以实现您正在寻找的东西。这是一种可能性。

于 2012-12-08T20:20:17.237 回答
1

这也是可以使用的另一种方法

$animals = array('cat', 'dog', 'mouse', 'elephant');
if(isset($_POST['remove'])) $animals=array_diff($animals, array($_POST['animal']));
foreach($animals as $pet)
{
    echo'<form method="post" action="">';
    echo $pet.'<input type="submit" name="remove" value="remove"/><br/>';
    echo '<input type="hidden" name="animal" value="'.$pet.'"/>';
    echo '</form>';
}

更新:(对于您可以使用的 JavaScript 解决方案)

$animals = array('cat', 'dog', 'mouse', 'elephant');
echo'<form name="animalForm" method="post" action="">'; // action should be your this file name, i.e. 'pets.php'
foreach($animals as $pet)
{
    echo '<label>'.$pet.'<input type="button" class="remove" value="remove"/></label><br/>';
}
echo '</form>';

这是JavaScript可以在head标签之间的script标签中使用的代码,例如

<script type="text/javascript">
    window.onload=function(){
        var btns=document.getElementsByClassName('remove');       
        for(i=0;i<btns.length;i++)
        {
            if(btns[i].type==='button' && btns[i].className==='remove')
                btns[i].onclick=remove;
        }
    };
    function remove(event){
        var e = event || window.event;
        var el = e.target || e.srcElement;
        document.animalForm.removeChild(el.parentNode);
    }
</script>

JS 演示

于 2012-12-08T20:43:12.360 回答