Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

JavaScript - Problem

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.11.2006, 15:46    Titel: JavaScript - Problem Antworten mit Zitat

Hallo,

es geht um folgendes Codebeispiel: http://www.drweb.de/muster/popup-box-demo.html

Der Code ermöglicht das Handlen einer einzigen solchen Fake-Popup-Box. Ich müsste aber 15 solche Popupboxen verwalten können. Und zwar hab ich eine Imagemap mit verschiedenen Areas und wenn man die Maus auf eine Area hält, soll die ihr zugeordnete Popupbox aufgehen und sich wieder schließen, wenn die Maus weggeht. Mein Problem dabei ist momentan, dass ich so gut wie kein JavaScript kann und daher nicht weiß, wie ich ein Array von diesen Boxen erzeugen könnte, sodass ich bei den Areas
Code:
onMouseOver="box_zeigen(1);return false"
...
onMouseOver="box_zeigen(14);return false"

machen könnte. Die Funktion box_zeigen ist ja im Prinzip dieselbe wie box_weg, nur dass man statt "hidden" "visible" einsetzt.

Vielen Dank dem JavaScript-Experten, der mir da helfen kann, schon mal im Voraus und viele Grüße! lächeln
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.11.2006, 22:29    Titel: Antworten mit Zitat

also ich würde das ganze mit PHP dynamisch generieren und dann für deine boxen IDs mit zahlen vergeben. der javascript-aufruf wird dann auch mit dieser ID übergeben. dann könnte dein javascript herausfinden, ob:
document.getElementById("Feld18").irgendwas = irgendwas
....
meinst du sowas?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.11.2006, 23:17    Titel: Antworten mit Zitat

Code:
<html>
<head>
<script language="JavaScript1.2">
var ns4=document.layers
var ie4=document.all
var ns6=document.getElementById&&!document.all

//Drag und Drop Funktion fuer NS 4//
var dragswitch=0
var nsx
var nsy
var nstemp
function drag_drop_ns(name){
if (!ns4)
return
temp=eval(name)
temp.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)
temp.onmousedown=gons
temp.onmousemove=dragns
temp.onmouseup=stopns
}
function gons(e){
temp.captureEvents(Event.MOUSEMOVE)
nsx=e.x
nsy=e.y
}
function dragns(e){
if (dragswitch==1){
temp.moveBy(e.x-nsx,e.y-nsy)
return false
}
}
function stopns(){
temp.releaseEvents(Event.MOUSEMOVE)
}

//Drag und Drop Funktion fuer ie4+ und NS6//
function drag_drop(e){
if (ie4&&dragapproved){
crossobj.style.left=tempx+event.clientX-offsetx
crossobj.style.top=tempy+event.clientY-offsety
return false
}
else if (ns6&&dragapproved){
crossobj.style.left=tempx+e.clientX-offsetx
crossobj.style.top=tempy+e.clientY-offsety
return false
}
}
function initializiere_drag(e){
crossobj=ns6? document.getElementById("einepopupbox") : document.all.einepopupbox
var firedobj=ns6? e.target : event.srcElement
var topelement=ns6? "HTML" : "BODY"
while (firedobj.tagName!=topelement&&firedobj.id!="dragbar"){
firedobj=ns6? firedobj.parentNode : firedobj.parentElement
}
if (firedobj.id=="dragbar"){
offsetx=ie4? event.clientX : e.clientX
offsety=ie4? event.clientY : e.clientY
tempx=parseInt(crossobj.style.left)
tempy=parseInt(crossobj.style.top)
dragapproved=true
document.onmousemove=drag_drop
}
}
document.onmousedown=initializiere_drag
document.onmouseup=new Function("dragapproved=false")
//Drag und Drop Funktionen enden hier//
function box_weg(){
if (ie4||ns6)
crossobj.style.visibility="hidden"
else if (ns4)
document.einepopupbox.visibility="hide"
}
</script>
</head>
<body>

<div id="einepopupbox" style="position:absolute;width:250px;left:250;top:250">
<table border="0" width="250" bgcolor="#000080" cellspacing="0" cellpadding="2">
<tr><td width="100%">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="34">
<tr>
<td id="dragbar" style="cursor:hand" width="100%">
<ilayer width="100%" onSelectStart="return false">
<layer width="100%" onMouseover="dragswitch=1;if (ns4) drag_drop_ns(einepopupbox)" onMouseout="dragswitch=0">
<font color="#FFFFFF">Pop-up-Box</font>
</layer></ilayer></td>
<td style="cursor:hand"><a href="#" onClick="box_weg();return false"><img src="images/zu.gif" border=0></a></td>
</tr>
<tr>
<td width="100%" bgcolor="#FFFFFF" style="padding:4px" colspan="2">
Informationen, Informationen und Informationen...
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>

</body>
</html>

Wenn ich das richtig sehe, wird der Variable crossobj das Objekt mit der ID "einepopupbox" zugeordnet. Später wird dann immer Crossobj benutzt. Wie müsste man das JavaScript verändern, damit man beliebig viele divs definieren und diese dann über einen Index ansteuern kann? Ich habe keine Ahnung, was ich da an den Drag&Drop Functions etc. ändern müsste. verwundert traurig
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 26.11.2006, 19:25    Titel: Antworten mit Zitat

Hi,
..also eins ist schon mal klar:
Wenn zwei div's identische ID's haben, werden sie automatisch indiziert und
können dann per Index angesprochen werden. Die maximale Anzahl läßt sich mit
.Length ermitteln, die am besten du versuchst mal folgenden
Code:
         Sub ShowItems()
            Dim s
            Msg="<table><tr><td align=right>Lfd</td><td align=center>ID</td><td>Name" &"</td></tr>"
            With Document.Forms.Form1
               For i=0 To .Elements.Length-1 '-1 NIEMALS vergessen!!!
                  s=CStr(i):If i<10 Then s="&nbsp;&nbsp;" &s
                  Msg=Msg &"<tr><td align=right>" &i &"</td><td>" &(.Item(i).id) &"</td><td>" &(.Item(i).Name) &"</td></tr>"
               Next
            End With
            StaMsg Msg &"<span>Das sind " &Document.Form1.Length &"!</span></table>"
            Msg=""
         End Sub
zu verstehen(ist .Hta mit Vbs) grinsen
Alles zusammengebastelt mit SelfHtml von Stefan Münz..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 26.11.2006, 19:54    Titel: Antworten mit Zitat

Hm, aber das ist doch VBScript?! neutral
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 26.11.2006, 20:59    Titel: Antworten mit Zitat

Ich hatte geschrieben
Zitat:
(ist .Hta mit Vbs) grinsen
Alles zusammengebastelt mit SelfHtml von Stefan Münz..
..Vbs =VbScript(hatte ich vorausgesetzt)
Dieser Schnipsel ist schon ein paar Tage alt..
..und soll nur zeigen, daß, wenn es in Vbs geht, es auch in j(ava)Script gehen muß.
Und da ist SelfHtml wirklich die allererste Anlaufstelle.
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 26.11.2006, 22:17    Titel: Antworten mit Zitat

achja, bloß nicht IDs zwiemal vergeben. wenn schon, dann sollte man NAMEs zweimal vergeben zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 26.11.2006, 23:06    Titel: Antworten mit Zitat

Wie ich schon geschrieben hatte(s.o.) können ID's durchaus mehrfach vergeben werden..
..mehrfach vergebene Name's sind wichtig für Buttons, die dann alle zu einer Gruppe gehören(ich glaub so war das..)
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.11.2006, 22:19    Titel: Antworten mit Zitat

also mehrfach verwendete IDs soltest du nicht nehmen, weil

1) der code dann nicht valid ist
2) eine ID etwas einmaliges ist.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 28.11.2006, 23:35    Titel: Antworten mit Zitat

Hallo,

ich wollt nur Bescheid geben, dass ich das Problem jetzt ausgeräumt habe. Danke euch für eure Ideen! lächeln

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz