Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11106[/thread]

this -Problem?



<< >> 4 Einträge, 1 Seite
Froschpopo
 2008-01-07 13:50
#104458 #104458
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Habe folgendes gebastelt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<html>
<title>Test</title>
<head>
<script src="/js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">

jQuery().ready(function() {
$("a").click(function() {
mode = $(this).html();
here = this;

$(this).ajaxStart(function() {
$(this).html('Bitte warten...');
alert("Hier wirds merkwuerdig!!!!!!!!!!!!!");
});

$.ajax({
type: "GET",
url: "/cgi-bin/ajax.pl",
data: 'ijd',
dataType: 'html',
global: 'false',
success: function(html) {
if (mode == 'hallo') {
$(here).html('bye');
}

if (mode == 'bye') {
$(here).html('hallo');
}

}
});
return false;
});

});
</script>
</head>
<body>

<h1>Schalter-Test</h1>

<ul>

<li><a href="#">hallo</a></li>
<li><a href="#">hallo</a></li>
</ul>

</body>
</html>

Jetzt probiert doch mal folgendes aus:
klickt auf das erste "hallo". Danach steht dort: "bye".
Klickt dann auf das zweite "hallo".
Warum wird aus dem ersten "hallo" dann plötzlich "Bitte warten..." ???
Ist das ein Bug?
Ich will die beiden Schalter unabhängig voneinander jeweils zwischen "hallo" und "bye" umschalten können.

Mysteriös: Je öfter man klickt, desto häufiger wiederholt sich das alert() !
Das ganze ist schon echt merkürdig.
Gast Gast
 2008-01-07 17:36
#104462 #104462
Code: (dl )
1
2
  success: function(html) {
if (mode == 'hallo') {

1) Sicvher, dass dein Ajax-Aufruf immer klappt?
2) Sicher, dass mode immer 'hallo' oder 'bye' beinhaltet?

Da solltest du mal debuggen!
Struppi
 2008-01-07 18:06
#104463 #104463
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Es ist völlig unklar, was in den Funktionen this ist. this ist der Kontext in dem eine Funktion aufgerufen wird, also das Objekt was von $(this) zurückgegeben wurde. Genauso unklar ist es welches click() verwendet wird, da du ja mehrere Links hast. Es wird u.U. doch mal Zeit sich die Dokumentation anzuschauen.

Übrigens ist es auch in JS nicht sinnvoll mit globalen Variabeln zu arbeiten.
Gast Gast
 2008-01-07 18:13
#104464 #104464
Froschpopo, du solltest entweder lokale Javascript-Variablen in Funktionen verwenden oder wenigstens diese in Objekten verstecken.
Was du machst, erzeugt Unordnung -> keinen Überblick mehr welche Variable zu welcher Funktion gehört.

Außerdem solltest du wirklich die Doku lesen, denn auch jQuery ist kein Anfänger-Javascript-Framework/Bibliothek.
<< >> 4 Einträge, 1 Seite



View all threads created 2008-01-07 13:50.