onchange="window.open('Prof.php?name=selecedIndex");
sandra
- javascript
hallo forumsmitglieder,
diese select-anweisung ist teil des chats. in ihr werden alle online-chatter angezeigt. Ich möchte, dass bei Mausklick auf den Namen eines
chatters das Fenster "ChatProfile.php" aufgeht, in dem sein profil angezeigt wird. dem neuen fenster muss ich einen wert übermitteln, damit er weiss,
wessen profil angezeigt werden soll (selected index). weisst du, wie ich "Meine Version" so schreibe, dass ich über die unten stehenden Funktionen der Datei "chatter.js.php" den Wert für selectedindex erhalte
und diesen mit window.open übergebe?
MEINE VERSION: <select name="chatters" multiple="multiple" onchange="window.open('ChatProfiles.php?name="showContextMenu(getNick(this.selectedIndex),this.selectedIndex)"','','toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=400,height=500')"></select>
oder: onchange="window.open('ChatProfiles.php?name=[this.selectedIndex]'....
ORIGINAL VERSION: <select name="chatters" multiple="multiple" onchange="showContextMenu(getNick(this.selectedIndex),this.selectedIndex)"></select>
das ist der Inhalt der Datei "chatter.js.php", aus der die ORIGINAL VERSION ihre selected.index werte herholt:
/*<![CDATA[*/
var ie5=document.all&&document.getElementById;
function showContextMenu(nickname,index)
{if(nickname=='')alert('debug: nick is empty!');
if(nickname=='' || nickname=='<?=$_SESSION['chatter']->get_nick()?>') return false;
parent.output.setNickname(nickname);
var left=ie5? parent.output.document.body.clientWidth : parent.output.window.innerWidth;
left -= parent.output.menuobj.offsetWidth + 3;
/*alert('Top: '+parent.contextMenuTop+' Left: '+left);*/
/*alert('debug_: '+ (parent.output.document.all.contentOut.offsetHeight - parent.output.document.body.clientHeight));*/
parent.scrollContextMenu = true;
parent.output.showmenufixed(left,parent.menuTop+20);
}
document.oncontextmenu = disableRightClick;
function disableRightClick()
{
alert('<?=$_SESSION['translator']->out('RELOAD_MAKES_NO_SENSE')?>');
return false;
}
function getNick(index)
{
var nick = parent.oldChatters[index].value;
if( nick.match(/#{3}[^#]*#{3}/) )
{
return parent.oldChatters[index].text;
}
else
{
return nick;
}
}
/*]]>*/
hi,
MEINE VERSION: <select name="chatters" multiple="multiple" onchange="window.open('ChatProfiles.php?name="showContextMenu(
das ist unfug. _wenn_ showContextMenu() einen string zurückliefern würden, dann wäre hier eine stringverkettung gefragt.
oder: onchange="window.open('ChatProfiles.php?name=[this.selectedIndex]'....
willst du lediglich den index der ausgewählten option zurückgeben, oder vielleicht ihren _text_?
gruß,
wahsaga
der Text würde schon genügen.
Kannst du mir bitte helfen, wie ich das definiere?
sandra
hi,
der Text würde schon genügen.
Kannst du mir bitte helfen, wie ich das definiere?
also ich _text_ mit unterstrichen extra betonte - hatte ich da eventuell erhofft, dass madame sich mal selbst die mühe machen würde, sich http://de.selfhtml.org/javascript/objekte/options.htm anzuschauen ...?
jepp, davon dürfen sie ausgehen.
gruß,
wahsaga
ja, ich habe mir die Script dieser Seite durchgelesen.
Doch leider keine passende Lösung für mein Problem gefunden
Ich habe jetzt eine Funktion erstellt, in welcher der Wert für selectedIndex ermittelt werden soll und dann per URL-String an das Script der zu öffnenden Seite übergeben wird. Diese Funktion wird bei onchange ausgelöst.
Geht es, dass "go(this.selectedIndex);" den Index an die Funktionen die den nickname ermitteln in der externen .js Datei übergeben?
Da ich an diesem Script versuche, sehr viel über Variablen zu lernen wäre es toll, wenn mir wieder jemand sagen könnte, was daran falsch ist, überhaupt nicht geht und wie ich es richtig programmieren kann.
vielen dank
function go(this.selectedIndex)
{
$nick=getNick(this.selectedIndex);
window.open("ChatProfiles.php?name=$nick","","toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=400,height=500");
}
onchange="go(this.selectedIndex);"></select>
erkennt er hierdurch den selectedIndex
hi,
$nick=getNick(this.selectedIndex);
hier vermischst du offenbar javascript und PHP.
das kann so aber nicht funktionieren, da PHP längst fertig gearbeitet hat, wenn dein JS ausgeführt wird.
auf grund deiner ursprünglichen fragestellung war ich davon ausgegangen, dass du den nicknamen doch bereits als _anzeigewert_ für die options benutzt hast - also warum holst du ihn dir nich auch wieder von dort ...?
gruß,
wahsaga
Bitte
wie definiere ich das script, um an den Inhalt von chatters zu kommen?
Sorry aber ich weiss hier echt nicht weiter.
onchange="window.open('ChatProfiles.php?name=chatters')"></select>»
s
hi,
wie definiere ich das script, um an den Inhalt von chatters zu kommen?
Sorry aber ich weiss hier echt nicht weiter.
dann lies noch mal die von mir verlinkte seite, da steht, wie du an den _text_ einer option kommst.
gruß,
wahsaga
ok,
also wie ich an die einzelnen Elemente rankomme weiss ich jetzt. ich gebe den pfad über document bis zu text oder value an.
jetzt wollte ich den text des angeklickten der variablen chatter zuweisen. doch leider funktioniert das nicht.
was mache ich jetzt schon wieder falsch?
function go()
{
var chatter=document.chattersOnline.chatters.text;
alert(chatter);
}
<select name="chatters" multiple="multiple" onchange="go();"></select>
sandra
hi,
jetzt wollte ich den text des angeklickten der variablen chatter zuweisen. doch leider funktioniert das nicht.
was mache ich jetzt schon wieder falsch?
du denkst offenbar recht wenig darüber nach, was du eigentlich tust.
darüber hinaus hast du die von mir verlinkte seite offenbar immer noch nicht aufmerksam gelesen, denn dort befindet sich ein _beispiel_, was genau das leisten sollte, was du suchst.
var chatter=document.chattersOnline.chatters.text;
<select name="chatters" multiple="multiple" onchange="go();"></select>
woher zum henker sollte select eine eigenschaft namens text haben?
gruß,
wahsaga
die beispiele auf Deiner empfohlenen Seite beinhalten doch alle festdefinierte Stellen, deren Position [] direkt angesprochen wird.
In meinem Fall weiss ich aber nicht, wieviel Auswahlmöglichkeiten der select-tag letztendlich im online-chat haben wird.
Mir ist schon über weil ich einfach nicht darauf komme, wie ich das schreiben kann
welches Beispiel bitte schön meinst du passt denn genau auf meinen fall?
hi,
die beispiele auf Deiner empfohlenen Seite beinhalten doch alle festdefinierte Stellen, deren Position [] direkt angesprochen wird.
wenn du damit sagen willst, dass du wirklich nicht in der lage bist, [5] durch [variable_mit_entsprechendem_inhalt] auszutauschen - dann solltest du von javascript vielleicht doch besser die finger lassen.
In meinem Fall weiss ich aber nicht, wieviel Auswahlmöglichkeiten der select-tag letztendlich im online-chat haben wird.
wen interessiert das denn bitte?
du weist, _welche_ option ausgewählt wurde - und holst dir dann einfach deren textinhalt.
wenn du jetzt behaupten willst, dass sei nicht das, was du wolltest - dann reden wir hier wirklich an einander vorbei. (wobei das nicht mein fehler wäre, weil ich dich explizit danach gefragt hatte, ob es das ist, was du willst.)
welches Beispiel bitte schön meinst du passt denn genau auf meinen fall?
schau sie dir _bitte_ endlich aufmerksam an.
und achte nochmals darauf, dass ich sagte, _text_ nicht umsonst mit unterstrichen eingefasst zu haben.
gruß,
wahsaga
vielen dank
oder
über diese Zeile bekomme ich den Wert von chatter nicht wahr?
wie weisse ich den aus der externen Funktion meinem window.open Befehl zu?
$nick = <?=$_SESSION['chatter']->get_nick()?>
sandra
Hallo sandra.
Ich möchte, dass bei Mausklick auf den Namen eines chatters das Fenster "ChatProfile.php" aufgeht, in dem sein profil angezeigt wird. dem neuen fenster muss ich einen wert übermitteln, damit er weiss, wessen profil angezeigt werden soll (selected index).
Nicht dem _Fenster_, sonderm dem Script, das in dieses Fenster geladen werden soll.
onchange="window.open('ChatProfiles.php?name=[this.selectedIndex]'....
Die in window.open() anzugebende Ressource ist ein String. Ergo hat in deinem PHP-Script in $_GET['name'] den Wert "[this.selectedIndex]". Du musst also schon innerhalb des Javascriptaufrufs dafür sorgen, dass dem Script ein Wert übergeben wird, mit dem es etwas anfangen kann, das entscheidende Stichwort Zeichenkettenverknüpfung hast du ja schon bekommen.
Freundschaft!
Siechfred