Javascript: "Has no properties"
Hej, jeg skriver her fordi jeg ikke lige kan komme videre.. Jeg har lavet et script med både PHP og Javascript, men mit Javascript gider ikke rigtig, og jeg aner ikke hvorfor. :)Selve scriptet er en meget lille del af et meget større script hvor man kan vælge en farve til beskeder man sender. I starten ligger der en masse konstanter, som vil komme fra en masse andre dokumenter. Jeg har kommenteret lidt til værdierne, så I kan se hvad det er for noget.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php
//Konstanter som senere hen vil blive inkluderet ind fra et andet dokument
$epoch = date("U");
$day = date("j");
$month = date("n");
$year = date("Y");
$hour = date("H");
$minute = date("i");
$username = "Brugernavn"; //Brugerens brugernavn, hentet fra table users
$type = "msg_color"; //Type kan kun indeholde "msg_color" eller "text_color"
$msg_color = "FFFF00"; //Brugerens nuværende farver
$text_color = "00FF00"; //Brugerens nuværende farver
$userid = "12"; //Brugerens ID
$usercolor = $msg_color; //Brugerens nuværende farve, vil blive bestemt ud fra type i det store script
?>
<script language="javascript" type="text/javascript">
var type = document.forms['colorform'].subtype.value;
function changeColor(color, obj){
type = document.forms['colorform'].subtype.value; //pga problemer hentes type igen
if(obj == "link"){ //Hvis brugeren har fået farvekoden fra linket, og derfor ikke selv har skrevet koden
document.forms['colorform'].color.value = color; //Farvekoden bliver skrevet i et tekstfelt
}
var colorCode = "#"+document.forms['colorform'].color.value; //Der sættes # foran
if(type == "msg_color"){ //Tekst farve eller baggrundsfarve?
document.namebar.style.background = colorCode;
document.displaycolor.style.background = colorCode;
}else if(type == "text_color"){
document.displaycolor.style.color = colorCode;
}
}
</script>
<title>Farvevælger</title>
<style type="text/css">
/* COLORSETTINGS ################################ (Skal med i style.css når scriptet er færdigt) */
#test_msg div.namebar img{
float:left;
margin-top: -5px;
margin-right: 5px;
margin-bottom: 5px;
margin-left: 5px;
border-top: 1px solid #000000;
border-bottom: 1px solid #000000;
border-left: 1px solid #000000;
border-right:1px solid #000000;
}
#test_msg div.namebar{
width:438px;
height:110px;
text-align:left;
color:#00FF00;
background:#993300;
padding-top: 10px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px;
margin-top: 5px;
margin-right: 5px;
margin-bottom: 0px;
margin-left: 5px;
border-top: 1px solid #000000;
border-bottom: 1px solid #000000;
border-left: 1px solid #000000;
border-right:1px solid #000000;
}
#test_msg div.displaycolor{
width:408px;
text-align:left;
color:#00FF00;
background:#993300;
padding-top: 1px;
padding-right: 15px;
padding-bottom: 1px;
padding-left: 15px;
margin-top: 0px;
margin-right: 5px;
margin-bottom: 5px;
margin-left: 5px;
border-top: 0px solid #000000;
border-bottom: 1px solid #000000;
border-left: 1px solid #000000;
border-right:1px solid #000000;
}
</style>
</head>
<body>
<?php
$color[0] = "00";
$color[1] = "33";
$color[2] = "66";
$color[3] = "99";
$color[4] = "CC";
$color[5] = "FF";
echo "<div id=\"test_msg\">";
echo "<div class=\"namebar\" name=\"namebar\">\n";
echo "<a href=\"#\"><img src=\"forum/grafik/avatar.jpg\" border=\"0\"></a>\n";
echo "<a href=\"#\" class=\"username\">" . $username . "</a>\n";
echo "" . $day . "/" . $month . "-" . $year . " - " . $hour . ":" . $minute . "\n";
echo "</div>\n";
echo "<div class=\"displaycolor\" name=\"displaycolor\">\n";
echo "En masse tekst med forskellige farver";
echo "</div>\n";
echo "</div>\n";
echo "<div id=\"colortable\">\n";
echo "<table class=\"colortable\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n";
$i_reds = 0;
while($i_reds <= 5){
$reds = $color[$i_reds];
$i_greens = 0;
while($i_greens <= 5){
$greens = $color[$i_greens];
$i_blues = 0;
echo "<tr>\n";
while($i_blues <= 5){
$blues = $color[$i_blues];
$hex_color = $reds . $greens . $blues;
echo "<td><a href=\"#\" onClick=\"changeColor('" . $hex_color . "', 'link');\" style=\"color:#" . $hex_color . "; background:#" . $hex_color . ";\"> </a></td>\n";
$i_blues++;
}
echo "</tr>\n";
$i_greens++;
}
$i_reds++;
}
echo "</table>\n";
echo "<form action=\"#\" method=\"post\" id=\"colorform\" name=\"colorform\" onSubmit=\"document.forms['colorform'].ok.value = 'Loading...'\">\n";
echo "<input type=\"hidden\" name=\"type\" value=\"user_settings\">\n";
echo "<input type=\"hidden\" name=\"p\" value=\"users\">\n";
echo "<input type=\"hidden\" name=\"sp\" value=\"settings\">\n";
echo "<input type=\"hidden\" name=\"subtype\" value=\"" . $type . "\">\n";
echo "<input type=\"hidden\" name=\"userid\" value=\"" . $userid . "\">\n";
echo "<input tyype=\"text\" name=\"color\" class=\"text\" value=\"" . $usercolor . "\">";
echo "<input type=\"submit\" value=\"Gem farve\" class=\"submit\" name=\"ok\">";
echo "</form>\n";
echo "</div>\n";
?>
</body>
</html>
Når jeg bare fortæller den at den skal skrive farvekoden i text-feltet, så virker det fint, men så snart jeg skal bruge en af de 2 divs til noget så får jeg følgende i Firefox fejlkonsol:
Fejl: document.namebar has no properties
Fejl: document.displaycolor has no properties
Jeg har også forsøgt mig med et id='namebar' og document.getElementById['namebar'].style.color
Men det gav samme resultat. Hvordan får jeg det til at virke?
MVH J1x4r4