1

这是我的代码:

<?php
  // Returns a random RGB color (used to color the vote bars)
  function getRandomColor2()
  {
       $r2 = rand(128,255); 
       $g2 = rand(128,255); 
       $b2 = rand(128,255); 
       $color2 = dechex($r2) . dechex($g2) . dechex($b2);
       echo "$color2";
  }

  echo "<table id=\"tblResults2\" align=\"center\">";

  // Get max vote count
  $doc = new DOMDocument();
  $doc->load("../vote_dir/xml/results.xml");
  $maxvotes2 = 0;
  $pollitems2 = $doc->getElementsByTagName("pollitem");
  foreach( $pollitems2 as $pollitem2 )
  {
    $votes2 = $pollitem2->getElementsByTagName("votes");
    $vote2 = $votes2->item(0)->nodeValue;
    $maxvotes2 = $maxvotes2 + $vote2;
  }

  // Generate the results table
  $doc = new DOMDocument();
  $doc->load("../vote_dir/xml/results.xml");
  $pollitems2 = $doc->getElementsByTagName("pollitem");
  foreach( $pollitems2 as $pollitem2 )
  {
    $entries2 = $pollitem2->getElementsByTagName("entryname");
    $entry2 = $entries2->item(0)->nodeValue;
    $votes2 = $pollitem2->getElementsByTagName("votes");
    $vote2 = $votes2->item(0)->nodeValue;
    $tempWidth2 = $vote2 / $maxvotes2;
    $tempWidth2 = 300 * $tempWidth2;
    $votepct2 = round(($vote2 / $maxvotes2) * 100);
    echo "<tr><td width=\"45%\" class=\"polls\">$entry2</td>";
    echo "<td width=\"35%\" class=\"resultbar\"><div class=\"bar\" style=\"background-color: ";
        getRandomColor2();
        echo "; width: $tempWidth2 px;\">$votepct2%</div></td><td class=\"each_vote\" width=\"20%\">($vote2 votes)</td></tr>";
  }
  echo "<tr><td width=\"45%\" class=\"total\" colspan=\"3\">Σύνολο ψήφων: $maxvotes2</td>";
  echo "</table>";
?>

我的问题是,当我调用它时,一切正常,但是:

  1. 我没有颜色

  2. 我所有显示 % 的 DIV 的宽度都相同,而不是 $tempWidth2

为每个 div 显示固定(不同)颜色是否更容易?谢谢

4

1 回答 1

2

改变:

echo "$color2";

到:

echo "#$color2"; // added #, fixes colors

...并改变:

echo "; width: $tempWidth2 px;\">$votepct2%</div></td><td class=\"each_vote\" width=\"20%\">($vote2 votes)</td></tr>";

...到:

echo "; width: {$tempWidth2}px;\">$votepct2%</div></td><td class=\"each_vote\" width=\"20%\">($vote2 votes)</td></tr>";
// removed a space, wrapped var in {}, fixes widths

...尽管在从函数返回字符串的可读性方面会做得更好,如下所示:

function getRandomColor2()
{
     $r2 = rand(128,255); 
     $g2 = rand(128,255); 
     $b2 = rand(128,255); 
     $color2 = dechex($r2) . dechex($g2) . dechex($b2);
     return "#".$color2;
}

// ...

echo "<tr>"
   . "<td width=\"45%\" class=\"polls\">{$entry2}</td>"
   . "<td width=\"35%\" class=\"resultbar\">"
   . "<div class=\"bar\" style=\"background-color: ".getRandomColor2()."; width: {$tempWidth2}px;\">{$votepct2}%</div>"
   . "</td>"
   . "<td class=\"each_vote\" width=\"20%\">({$vote2} votes)</td>"
   . "</tr>";
于 2012-05-22T15:59:10.377 回答