[Javascript] Objekt ist undefiniert - IE Fehler


  • bald_patr
  • 1625 Aufrufe 1 Antwort

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [gelöst][Javascript] Objekt ist undefiniert - IE Fehler

    Ich habe eine Javascriptklasse in der mehrere Funktionen vorhanden sind um zb User zu löschen/hinzufügen! Im Firefox klappt alles wunderbar nur der Internet Explorer (6 / 7) streikt mit folgender Fehlermeldung: 'objHandleFriends' ist undefiniert, egal welche Funktion ich aufrufen will! zb.: objHandleFriends.delFriend(1)

    Hier der Code von Statistik.js, außerdem verwende ich Scriptaculous.

    Quellcode

    1. HandleFriends = Class.create();
    2. HandleFriends.prototype =
    3. {
    4. initialize: function(e)
    5. {
    6. },
    7. delFriend: function(id)
    8. {
    9. var pars = 'newid='+id+'&action=delnewfriend';
    10. new Ajax.Request(
    11. '/ajax/statistik.php',
    12. {
    13. method: 'post',
    14. parameters: pars,
    15. asynchronous:true,
    16. onSuccess: this.doDelFriend.bind(this),
    17. onFailure: this.handleFailure.bind(this)
    18. });
    19. },
    20. doDelFriend: function(response)
    21. {
    22. try
    23. {
    24. var notifyData = eval('(' + response.responseText + ')');
    25. }
    26. catch(e)
    27. {
    28. $('testMsg').innerHTML = 'Fehler beim Entfernen!';
    29. return;
    30. }
    31. new Effect.Fade('friend'+notifyData.id, {duration : 0.8});
    32. //$('testMsg').innerHTML = notifyData.noError;
    33. },
    34. addFriend: function(id)
    35. {
    36. var pars = 'newid='+id+'&action=add2friends';
    37. new Ajax.Request(
    38. '/ajax/statistik.php',
    39. {
    40. method: 'post',
    41. parameters: pars,
    42. asynchronous:true,
    43. onSuccess: this.doAddFriend.bind(this),
    44. onFailure: this.handleFailure.bind(this)
    45. });
    46. },
    47. doAddFriend: function(response)
    48. {
    49. try
    50. {
    51. var notifyData = eval('(' + response.responseText + ')');
    52. }
    53. catch(e)
    54. {
    55. $('testMsg').innerHTML = 'Fehler beim Hinzufügen!';
    56. return;
    57. }
    58. new Effect.Fade('addLink'+notifyData.id, {duration : 0.8});
    59. new Effect.Fade('delLink'+notifyData.id, {duration : 0.8});
    60. //$('testMsg').innerHTML = notifyData.noError;
    61. },
    62. handleFailure: function(response)
    63. {
    64. $('testMsg').innerHTML = 'Fehler';
    65. },
    66. }
    67. var objHandleFriends = new HandleFriends();
    Alles anzeigen


    edit:

    habs jetzt so versucht aber da kommt der gleiche fehler

    Quellcode

    1. var objHandleFriends = {
    2. 'delFriend' : function(id)
    3. {
    4. var pars = 'newid='+id+'&action=delnewfriend';
    5. new Ajax.Request(
    6. '/ajax/statistik.php',
    7. {
    8. method: 'post',
    9. parameters: pars,
    10. asynchronous:true,
    11. onSuccess: this.doDelFriend.bind(this),
    12. onFailure: this.handleFailure.bind(this)
    13. });
    14. },
    15. 'doDelFriend' : function(response)
    16. {
    17. try
    18. {
    19. var notifyData = eval('(' + response.responseText + ')');
    20. }
    21. catch(e)
    22. {
    23. $('testMsg').innerHTML = 'Fehler beim Entfernen!';
    24. return;
    25. }
    26. new Effect.Fade('friend'+notifyData.id, {duration : 0.8});
    27. //$('testMsg').innerHTML = notifyData.noError;
    28. },
    29. 'addFriend' : function(id)
    30. {
    31. var pars = 'newid='+id+'&action=add2friends';
    32. new Ajax.Request(
    33. '/ajax/statistik.php',
    34. {
    35. method: 'post',
    36. parameters: pars,
    37. asynchronous:true,
    38. onSuccess: this.doAddFriend.bind(this),
    39. onFailure: this.handleFailure.bind(this)
    40. });
    41. },
    42. 'doAddFriend' : function(response)
    43. {
    44. try
    45. {
    46. var notifyData = eval('(' + response.responseText + ')');
    47. }
    48. catch(e)
    49. {
    50. $('testMsg').innerHTML = 'Fehler beim Hinzufügen!';
    51. return;
    52. }
    53. new Effect.Fade('addLink'+notifyData.id, {duration : 0.8});
    54. new Effect.Fade('delLink'+notifyData.id, {duration : 0.8});
    55. //$('testMsg').innerHTML = notifyData.noError;
    56. },
    57. 'handleFailure' : function(response)
    58. {
    59. $('testMsg').innerHTML = 'Fehler';
    60. },
    61. }
    Alles anzeigen


    Problem wurde gelöst
    ich zitiere:

    Bei expliziter Eigenschaftsdefinitinon eines Objekts dienen Kommas nicht als abschliessende Befehlsparameter sondern als Variablenseparatoren. Das letzte Komma (hinter "handleFailure") ist also zu viel.
    Der MSIE nimmt die Syntaxvorschrift an dieser Stelle genau und erwartet eine weitere Eigenschaft - andere Browser sehen grosszügig darüber hinweg, was man auch als Förderung fehlerbehafteter Programmierung bezeichenen könnte...


    Mit freundlichen Grüssen
    Baldi