Problem mit Objektmethode
Gerrit
- javascript
Hallo zusammen,
kann mir jemand sagen, warum der alert() bei mir undifined ausgibt bzw warum ich auf diese Methode nicht zugreifen kann?
<script language="javascript">
orderPosition = function() {
var pos = 1;
this.addPosition = function() {
$('#orderPosition_0').append('<div class="order_position" id="order_position_"' + pos + '></div>');
$.ajax( {
url: '/TicketStore/orderPositions/add_order_position/' + $('#OrderEventId').val(),
success: function(data, success, xhr) {
$('#order_position_' + pos).html(data);
}
});
pos++;
}
}
$(document).ready( function() {
alert(orderPosition.addPosition);
$('#order_positions').append('<a href="#"><?php __('New order position'); ?></a>').click(orderPosition.addPosition);
});
</script>
Danke und Grüße!
kann mir jemand sagen, warum der alert() bei mir undifined ausgibt bzw warum ich auf diese Methode nicht zugreifen kann?
[code lang=javascript]<script language="javascript">
Das ist gruselig. Du verwendest jquery und gleichzeitig dieses hoffnungslos veraltete Attribut???
orderPosition = function() {
var pos = 1;
this.addPosition = function() {
Was soll this hier sein? Mach mal ein alert(this) an der Stelle.
Struppi.
Das ist gruselig. Du verwendest jquery und gleichzeitig dieses hoffnungslos veraltete Attribut???
Was soll ich stattdessen verwenden? Hilfe gerne genommen.
Was soll this hier sein? Mach mal ein alert(this) an der Stelle.
Ich habe dort bereits auch schon var porbiert, damit geht es auch nicht.
Das ist gruselig. Du verwendest jquery und gleichzeitig dieses hoffnungslos veraltete Attribut???
Was soll ich stattdessen verwenden? Hilfe gerne genommen.
Das was in allen HTML Dokumentationen steht.
Was soll this hier sein? Mach mal ein alert(this) an der Stelle.
Ich habe dort bereits auch schon var porbiert, damit geht es auch nicht.
Nein, das geht auch nicht. Du musst ein Objekt erzeugen um eine Objektmethode verwenden zu können.
Struppi.
Nein, das geht auch nicht. Du musst ein Objekt erzeugen um eine Objektmethode verwenden zu können.
Struppi.
Danke für die Info, ich bin neu in Javascript und dachte, dass über function() {} auch ein Objekt erzeugt wird. Gibt es dafür auch einen kurzform, oder muss ich das erst erzeugen und dann über die Punktnotation zuweisen?
orderPosition = {
pos: 1,
addPosition: function() {
var newOP = $('#order_position_0').clone().insertAfter($('#order_position_0'));
newOP.attr('id', '#order_position_' + this.pos);
alert(newOP.attr('id'));
/*$.ajax( {
url: '/TicketStore/orderPositions/add_order_position/' + $('#OrderEventId').val(),
success: function(data, success, xhr) {
$('#order_position_' + pos).html(data);
}
});*/
this.pos++;
}
}
Nun schaut mein Objekt so aus, was auch funktioniert, bis auf der Zugriff auf pos, oder this.pos aus der Methode heraus?! Warum nicht? this.pos ist gleich undifined und pos existiert laut firebug nicht.
Hi,
Nun schaut mein Objekt so aus, was auch funktioniert, bis auf der Zugriff auf pos, oder this.pos aus der Methode heraus?! Warum nicht? this.pos ist gleich undifined und pos existiert laut firebug nicht.
Hast du jetzt mal überprüft, *was* this eigentlich ist ...?
MfG ChrisB
Hast du jetzt mal überprüft, *was* this eigentlich ist ...?
Waahh... Ein HTMLFieldSetElement.... Wieso dass? Ich kann ja viele Programmiersprachen, aber ich finde irgendwie JavaScript ist die unlogischste... Hilfe!!!
Hi,
Hast du jetzt mal überprüft, *was* this eigentlich ist ...?
Waahh... Ein HTMLFieldSetElement.... Wieso dass?
Weil die Methode in dessen Kontext aufgerufen wird beim click-Event.
http://aktuell.de.selfhtml.org/artikel/javascript/organisation/#methoden-eigener-objekte-und-kontext
MfG ChrisB
Weil die Methode in dessen Kontext aufgerufen wird beim click-Event.
Okay, das leutet ein, aber wie komme ich nun an mein pos?
Hi,
Weil die Methode in dessen Kontext aufgerufen wird beim click-Event.
Okay, das leutet ein, aber wie komme ich nun an mein pos?
In dem du bitte verflixt noch mal in dem Artikel, den ich dir extra verlinkt habe, nachliest!
MfG ChrisB