1

这是我的计划的目标。

  1. 我想在页面上显示大约 5-6 个圆圈,颜色为红色和绿色。
  2. 什么时候,任何一个圆圈被点击。它的颜色变为蓝色。
  3. 然后,如果我单击页面上的任何其他圆圈,其颜色也应变为蓝色,并且先前单击的圆圈也应显示为蓝色。
  4. 因此,如果我一一点击所有圆圈,在连续页面加载中,所有圆圈都应显示为蓝色。
  5. 而且,当单击蓝色圆圈时,它应该显示其原始颜色。
  6. 这个循环应该永远持续下去,直到页面关闭。

这就是我到目前为止所做的。

define("SIZE", 5); //the no. of circles

 class redblock
     {
     var $color;


         function set_color($data)
     {
         $this->color = $data;
     }
     function get_color()
     {
         return $this->color;
     }
     function image_source()
     {
         $rval2 = $this->get_color();
         echo $rval2;
     }
     function display_block()
     {
         $rval = $this->get_color();
         echo "<img src = '",$rval,"' width=120> </br> " ; 
         }
 }

for ($i=0 ; $i < SIZE ; $i++ ) //INIT color blocks

             { $rb[$i] = new redblock ; }



for ($i=0 ; $i < SIZE ; $i++ ) //color set
{
    if(!isset($_POST[$i.'form']))
    {    
        if ($i % 2 == 0) //even blocks are green
            $rb[$i]->set_color("green.jpg");
        else                    //odd blocks are red
            $rb[$i]->set_color("red.jpg"); 
    }
    if ( $_POST[$i.'form'] == "blue.jpg" )
        $rb[$i]->set_color("blue.jpg");

    if(isset($_POST[$i.'form']))
        $rb[$i]->set_color("blue.jpg");
} ?>



<?php

// BOTH BLOCKS when clicked repeatedly should turn to white and fro.

for ($i=0 ; $i < SIZE ; $i++ ) //display the blocks
{
    echo "<form method ='post'>";
    echo "<input type = 'image' width='120' src ='",$rb[$i]->image_source(),"'>";
    echo "<input type='hidden' name='".$i,"form' value='",$rb[$i]-get_color(),"'>";
        echo "</form>";
    }

?>

发生了什么,在这段代码中。1. 假设我点击圆圈 1。它变成蓝色。2.然后我点击圈2,它变成蓝色,但圈1又变成绿色。我想要圈一个保留蓝色。

请给我正确的代码,或指导我正确的方向。甚至,一个小小的帮助将在很大程度上受到赞赏。

我对 Javascript 等一无所知。我只知道 PHP 和 HTML/CSS。

谢谢你。

4

2 回答 2

1

您可以使用$_SESSION来存储每个圆圈的状态并在连续页面加载时使用它。

于 2012-09-22T16:10:52.363 回答
1

您可以使用$_SESSION变量或使用setcookie()设置 cookie ,然后在连续页面加载时使用 $_COOKIE 检索它。无论哪种方式都会让您临时存储这些值。如果您希望这些值在浏览器关闭后消失,那么会话是可行的方法。Cookie 将一直存在,直到它们过期或被用户清除。

于 2012-09-22T16:17:07.813 回答