随机颜色和div宽度不起作用

时间:2012-05-22 15:52:36

标签: php

这是我的代码:

<?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

  3. 为每个div显示固定(不同)颜色更容易吗? 谢谢

1 个答案:

答案 0 :(得分: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>";