>>FarbwählerScript<< Fenster mit Rückgabewert
Madness Phil
- javascript
Hi,
verstehe JavaScript leider noch nicht so ganz.
Ich habe ein Textfeld und einen Button in der index.php und mit dem Button öffne ich per onclick die Datei fenster.php in einem neuen Fenster.
In der fenster.php ist ein Script mit verschiedenen Farben wo durch einen Klick der Farbcode in ein Textfeld geschrieben wird.
Problem:
Ich möchte das Fenster mit einem Button schliessen UND den Wert aus Textfeld-fenster.php in das Textfeld-index.php übertragen.
Danke
Madness Phil
Hallo Madness,
In der fenster.php ist ein Script mit verschiedenen Farben wo durch einen Klick der Farbcode in ein Textfeld geschrieben wird.
Wie sieht denn der (relevante!) Code dieser Seite bisher aus, was hast Du probiert, wo bist Du gescheitert?
Gruß,
Dieter
Hi
die Funktion in index.php:
function neuesFenster()
{
msgWindow=window.open("fenster.php","displayWindow", "toolbar=no,width=360,height=400,directories=no,status=no,scrollbars=yes,resize=no,menubar=no")
}
// -->
die Zeile in index.php:
<input type="Button" name="colorvalue" value="Color" onClick="return neuesFenster()">
Dadrunter is gleich das Textfeld!
von fenster.php:
<style>
td {width: 30px; height: 20px; font-size: 2px;}
</style>
<script type="text/javascript">
<!--
var ie5 = document.getElementById != null;
function doOver() {
var el = window.event.srcElement;
bgc = el.style.backgroundColor;
if (bgc != "") {
el.style.borderTopColor = "white";
el.style.borderLeftColor = "white";
el.style.borderRightColor = "black";
el.style.borderBottomColor = "black";
colorBox.style.backgroundColor = bgc;
colorName.innerHTML = bgc;
}
}
function doClick() {
bgc = window.event.srcElement.style.backgroundColor;
window.event.srcElement.style.borderColor = bgc;
if (bgc != "") {
document.Formular.farbe.value=bgc;
}
}
function doOut() {
var el = window.event.fromElement;
bgc = el.style.backgroundColor;
if (bgc != "") {
el.style.borderColor = bgc;
}
}
var colors = new Array(<?php
$sql = "SELECT * FROM color";
$result = mysql_query($sql);
For($i=1;$i<MYSQL_NUM_ROWS($result);$i++) {
$record = mysql_fetch_array($result);
If($i < (mysql_num_rows($result)-1)) {
echo '"' . $record['color'] . '",';
} Else {
echo '"' . $record['color'] . '"';
}
}
?>);
function writeRow(ar) {
var cells = 15;
var str = "";
for (var i=0; i<ar.length; ) {
str += "<tr>"
for (var j=0; j<=cells && i<ar.length; j++) {
str += "<td style='background-color: " + ar[i] + "; border: 1px outset " + ar[i] + ";'>";
str += " </td>\n";
i++;
}
str += "</tr>\n";
}
return str;
}
//-->
</script>
</head>
<body>
<table cellspacing="0" cellpadding="0" onmouseover="doOver()" onmouseout="doOut()" onclick="doClick()" style="width: 320;">
<tr>
<td colspan="15" style="font-family: verdana, helvetica; font-size: 9px; color: button-text; cursor: default; height: 15px;"><nobr>Farbe wählen:</nobr></td>
</tr>
<script>
document.write(writeRow(colors));
</script>
</table>
<hr>
<table>
<tr>
<td id="colorBox" style="border: 1px inset window; width: 30; height: 30; font-size: 2px; cursor: default;"> </td>
<td id="colorName" style="border: 0; font-family: verdana, helvetica; font-size: 9px; color: button-text; cursor: default;">Farbcode</td>
</tr>
<form name="Formular">
<tr>
<td colspan="2"><input type="text" name="farbe"></td>
</tr>
<tr>
<td><input type="Button" value="Schliessen" onclick="">
</tr>
</form>
</table></body>
Hallo Madness,
Was meinst Du wohl, warum ich 'relevanter Code' geschrieben habe und nicht 'Berge von verwirrendem Code'?
Die ganzen Styles und mouseover-Geschichten haben doch nichts mit dem Problem zu tun. Mit dem PHP-genrierten Array kann ich nichts anfangen, weil ich natuerlich keine passende Mysql-Datenbank habe. Ich weiss nicht, was fuer Fehlermeldungen du bekommen hast und kann es so natuerlich auch nicht selbst ausprobieren.
Also nochmal, was klappt bisher, was nicht, was sind die Fehlermeldungen, was ist der relevante Teil des Quellcodes der HTML-Seite, nachdem saemtliche PHP-Geschichten durch sind?
Gruß,
Dieter
Hi Dieter,
mit dem Button in der index.php rufe ich das Fenster auf.
Dort ist eine "Palette" mit Farben, wenn ich eine anklicke übergibt er den Farbcode in ein Textfeld das auch in fenster.php drin ist.
Das klappt auch alles wunderbar.
Ich möchte nur das Fenster schliessen und damit den Wert an die index.php übergeben.
Habe nur keine Ahnung wie...
Gruß,
Phil
Hallo Madness,
Du brauchst eine Funktion, die beides hintereinander macht
function machBeides()
{
setzeFarbe() // hier muss der Name der Funktion stehen, die Farbe weitergibt, ich meine, es waere doClick() gewesen
self.close() // macht das Fenster zu
}
Anstatt onclick="doClick()" notierst Du jetzt onclick="machBeides()"
Gruß,
Dieter