[JavaScript] - Welche Element ID bei onmouse

Borsti

Angesehenes Mitglied
Hallo,

ich habe ein JavaScript das ein Function startet:

CODE
document.onmousedown = meinefunktion;



Also wenn die Maus runter gedrückt wird starte ich die Function "meinefunktion".

Jetzt möchte ich aber ermitteln ob da wo die maus geklickt wurde eine z.b div ist mit der ID="nein"
Wenn dies so ist soll die funktion "meinefunktioN" nicht ausgeführt werden.

Suche jetzt schon seit drei tagen nach einer Lösung doch ich komme zu keinem Nenner!

Ich hoffe es hat einer ne Idee für mich wäre wirklich dankbar dafür.

MFG
 
Auf die Schnelle, nicht getestet (ich arbeite nicht so viel mit JavaScript):

Prinzip: Anstatt daß Du die ID raussuchst, definiere für dieses div einen eigenen Mousehandler:

CODE document.onmousedown = meinefunktion(0)


Und für dieses div:


CODE this.onmousedown = meinefunktion(1)


Die Funktion macht für 1 nix.
 
oder so:

CODE
<script type="text/javascript">
var a = document.getElementsByTagName("div");
for(i=0; i<a.length; i++)
if(a[i].id != 'nein')
{
a[i].onmousedown = meinefunktion;
}

function meinefunktion()
{
dein code
}
</script>

 
Hallo,

erst einmal danke für die schnellen Antworten, doch ich glaube ich habe mich nicht richtig ausgedrückt oder ich verstehe eure ansätze nicht.

Hier mal der komplette code wie er ausieht:

CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">

document.onmousedown = meinefunktion;

function meinefunktion(objEvent){
alert('Ich bin eine Nachricht');
}
</script>

</head>

<body>

<table width="755" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>Hier darf ein allert Fenster erscheinen wenn man die maus hier runter drückt</td>

</tr>
<tr id="nein">
<td>Und hier nicht weil die Id = nein ist.</td>
</tr>

</table>
</body>
</html>


Ich hoffe mir kann das jetzt jemand umbauen das halt beim unteren Text kein alert kommt.

MFG
 
probier mal aus

CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>

<body>

<table width="755" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>Hier darf ein allert Fenster erscheinen wenn man die maus hier runter drückt</td>

</tr>
<tr id="nein">
<td>Und hier nicht weil die Id = nein ist.</td>
</tr>

</table>

<script type="text/javascript">

var a = document.getElementsByTagName("tr");
for(i=0; i<a.length; i++)
if(a[i].id != 'nein')
{
a[i].onmousedown = meinefunktion;
}

function meinefunktion(){
alert('Ich bin eine Nachricht');

}
</script>


</body>
</html>

 
Hi Duvi,

das klappt erstmal soweit *freu*

Jedoch ist mein Problem das ich nie weiß welches element die Id=name hat. es kann auch <td> oder <table> oder ein formular feld. Also alles was es da so gibt.

Das ganze müsste also noch etwas flexibler sein.

Werde selber mal jetzt mit deinem Code experimentieren aber vieleicht hast ja auch du noch eine Idee.


MFG
 
du kannst auch

document.getElementsByTagName("*")

verwenden. dann werden alle elemente angesprochen.
oder den entsprechenden elementen ein name attribute zuweisen und

getElementsByName()

benutzen.
 
Hi,

also "*" geht leider nicht dann erscheind der alert überall.

Und noch namen zu zu vergeben wollte ich eigentlich vermeiden.

MFG
 
QUOTE also "*" geht leider nicht dann erscheind der alert überall.

ja, überall dort wo nicht id="nein" steht. wolltest du doch so, oder?

alternativ kannst du ja mit id="ja" arbeiten und den code nach
if(a.id = 'ja')
ändern.
 
QUOTE
ja, überall dort wo nicht id="nein" steht. wolltest du doch so, oder?


nein leider wird die funktion überall ausgeführt.

MFG
 
Habe es jetzt so gelöst:

CODE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">

document.onmousedown = meinefunktion;

function meinefunktion(objEvent){
alert('Ich bin eine Nachricht');
}
</script>

</head>

<body>

<table width="755" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>Hier darf ein allert Fenster erscheinen wenn man die maus hier runter drückt</td>

</tr>
<tr id="nein">
<td>Und hier nicht weil die Id = nein ist.</td>
</tr>

</table>
</body>
</html>



Jedoch kommt der alert auch wenn man den ersten klick in dem "nein" element macht. Danach klappt es aber. Hat jemand dafür vieleicht eine lösung?


CODE document.getElementById("nein").onmousedown = meinefunktion;

wird beim ersten aufruf der funktion meinefunktion2 nicht ausgeführt.

MFG
 
Hallo,

bei der oben aufgeführten Variante ist nicht nur das Problem mit dem ersten aufruf sondern ich habe jetzt auch festgestellt das wenn keine id="nein" in dem Code enthalten ist, dass ganze nicht mehr funktioniert.

Hat wirklich keiner ne weitere Idee?


MFG
 
ähm ja, du hast eine funktionierende variante und noch einen alternativen ansatz von jürgen ... dann fängst du an im code rumzuborsteln bis nichts mehr funktioniert ....

die einzige idee die mir einfällt, ist ein zitat von sigmund freud über die frauen abwandeln:

Die große Frage, die ich trotz meines dreißigjährigen Studiums der borstigen Seele nicht zu beantworten vermag, lautet:
Was will Borsti eigentlich?


wink.gif
duvi
 
Zurück
Oben