Auswechslungsproblem mit IE und Moz FF

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

  • Auswechslungsproblem mit IE und Moz FF

    Hallo, ich habe folgenden Quelltext geschrieben. Funktioniert super im FF.

    IM IE kommt aber :
    "Das Objekt unterstützt diese Eigenschaft oder Methode nicht!" und es wird nicht weiter ausgeführt.

    Quellcode

    1. <script type="text/javascript">
    2. var currentvalue = "selectProject";
    3. var options = "";
    4. function newProject() {
    5. // parent
    6. var element = document.getElementById("switch");
    7. var oldField = document.getElementById(currentvalue);
    8. var oldRef = document.getElementById("switchRef");
    9. if ( currentvalue == "selectProject" )
    10. {
    11. // replaceWith
    12. var replaceField = document.createElement("input");
    13. replaceField.setAttribute("type", "text");
    14. replaceField.setAttribute("name", "newProject");
    15. replaceField.setAttribute("value", "Neues Projekt");
    16. replaceField.setAttribute("id", "newProject");
    17. oldRef.firstChild.data = "Zurück zur Liste?";
    18. }
    19. else if ( currentvalue == "newProject")
    20. {
    21. // replaceWith
    22. var replaceField = document.createElement("select");
    23. replaceField.setAttribute("name", "newProject");
    24. replaceField.setAttribute("id", "selectProject");
    25. <--{foreach from=$projects item=project}--!>
    26. var newOption = document.createElement("option");
    27. newOption.appendChild(document.createTextNode( "<--{$project.title}--!>" ));
    28. newOption.setAttribute("value", "<--{$project.id}--!>");
    29. replaceField.appendChild(newOption);
    30. <--{/foreach}--!>
    31. oldRef.firstChild.data = "Neues Projekt anlegen?";
    32. }
    33. // replace
    34. element.replaceChild(replaceField, oldField);
    35. if ( currentvalue == "selectProject")
    36. currentvalue = "newProject";
    37. else
    38. currentvalue = "selectProject";
    39. }
    40. </script>
    Alles anzeigen


    Aufgerufen wird diese Funktion mit :

    Quellcode

    1. <a href="#" onClick="javascript:newProject()" id="switchRef"..


    Die Bedeutung der angesprochene Fehlermeldung habe ich schon über Google versucht nachzuempfinden, allerdings waren wir die Antworten wenig ersichtlich.

    Was kann daran falsch sein?

    Übrigens. Die Zeilenangabe der Fehlermeldung passt auf die Zeile, in welcher sich der Aufruflink befindet.
    Ich hoffe mir kann jemand helfen.
    Gruß Lars
  • Hallo larsemann. Um genau zu sagen wo das Problem liegt, muß du auch HTML Inhalt zeigen. Mann kann ja nicht wissen was für Tags mit
    id="switch"
    sind. Aber das ist nicht das Wichtigste. Diese kommische kommentare- tags
    <--{foreach from=$projects item=project}--!>
    werden von javascript nicht unterstützt. Die Seite wird bestimmt noch mit der andere Proigrammiersprache bearbeitet (z.B PHP). So kannst du die Seite auch nicht testen. Aber um zu zeigen, dass alles ok ist, schreibe ich selbs ein Tag mit in Script angegebener Struktur und mache die Kommentare weg:

    Quellcode

    1. <HTML>
    2. <script type="text/javascript">
    3. var currentvalue = "selectProject";
    4. var options = "";
    5. function newProject() {
    6. // parent
    7. var element = document.getElementById("switch");
    8. var oldField = document.getElementById(currentvalue);
    9. var oldRef = document.getElementById("switchRef");
    10. if ( currentvalue == "selectProject" )
    11. {
    12. // replaceWith
    13. var replaceField = document.createElement("input");
    14. replaceField.setAttribute("type", "text");
    15. replaceField.setAttribute("name", "newProject");
    16. replaceField.setAttribute("value", "Neues Projekt");
    17. replaceField.setAttribute("id", "newProject");
    18. oldRef.firstChild.data = "Zurück zur Liste?";
    19. }
    20. else if ( currentvalue == "newProject")
    21. {
    22. // replaceWith
    23. var replaceField = document.createElement("select");
    24. replaceField.setAttribute("name", "newProject");
    25. replaceField.setAttribute("id", "selectProject");
    26. var newOption = document.createElement("option");
    27. newOption.appendChild(document.createTextNode( "<--{$project.title}--!>"));
    28. newOption.setAttribute("value", "<--{$project.id}--!>");
    29. replaceField.appendChild(newOption);
    30. oldRef.firstChild.data = "Neues Projekt anlegen?";
    31. }
    32. // replace
    33. element.replaceChild(replaceField, oldField);
    34. if ( currentvalue == "selectProject")
    35. currentvalue = "newProject";
    36. else
    37. currentvalue = "selectProject";
    38. }
    39. </script>
    40. <a href="#" onClick="javascript:newProject()" id="switchRef">asdad</a>
    41. <!-- MEIN TAG -->
    42. <div id="switch"><div id="selectProject">kllk</div></div>
    43. <BODY>
    44. </BODY>
    45. </HTML>
    Alles anzeigen
  • Exakt so:

    Quellcode

    1. <script type="text/javascript">
    2. var currentvalue = "selectProject";
    3. var options = "";
    4. function newProject() {
    5. // parent
    6. var element = document.getElementById("switch");
    7. var oldField = document.getElementById(currentvalue);
    8. var oldRef = document.getElementById("switchRef");
    9. if ( currentvalue == "selectProject" )
    10. {
    11. // replaceWith
    12. var replaceField = document.createElement("input");
    13. replaceField.setAttribute("type", "text");
    14. replaceField.setAttribute("name", "newProject");
    15. replaceField.setAttribute("value", "Neues Projekt");
    16. replaceField.setAttribute("id", "newProject");
    17. oldRef.firstChild.data = "Zurück zur Liste?";
    18. }
    19. else if ( currentvalue == "newProject")
    20. {
    21. // replaceWith
    22. var replaceField = document.createElement("select");
    23. replaceField.setAttribute("name", "newProject");
    24. replaceField.setAttribute("id", "selectProject");
    25. var newOption = document.createElement("option");
    26. newOption.appendChild(document.createTextNode( "Plan B" ));
    27. newOption.setAttribute("value", "2");
    28. replaceField.appendChild(newOption);
    29. var newOption = document.createElement("option");
    30. newOption.appendChild(document.createTextNode( "Projekt A" ));
    31. newOption.setAttribute("value", "1");
    32. replaceField.appendChild(newOption);
    33. oldRef.firstChild.data = "Neues Projekt anlegen?";
    34. }
    35. // replace
    36. element.replaceChild(replaceField, oldField);
    37. if ( currentvalue == "selectProject")
    38. currentvalue = "newProject";
    39. else
    40. currentvalue = "selectProject";
    41. }
    42. </script>
    Alles anzeigen
  • Das hab ich kapiert. Smarty bearbeitet die Sete und ergibt diese saubere Code + ein Tag und functioniert ohne Fehler. Teste dieser Abschnitt selbst



    Quellcode

    1. <html>
    2. <body>
    3. <script type="text/javascript">
    4. var currentvalue = "selectProject";
    5. var options = "";
    6. function newProject() {
    7. // parent
    8. var element = document.getElementById("switch");
    9. var oldField = document.getElementById(currentvalue);
    10. var oldRef = document.getElementById("switchRef");
    11. if ( currentvalue == "selectProject" )
    12. {
    13. // replaceWith
    14. var replaceField = document.createElement("input");
    15. replaceField.setAttribute("type", "text");
    16. replaceField.setAttribute("name", "newProject");
    17. replaceField.setAttribute("value", "Neues Projekt");
    18. replaceField.setAttribute("id", "newProject");
    19. oldRef.firstChild.data = "Zurück zur Liste?";
    20. }
    21. else if ( currentvalue == "newProject")
    22. {
    23. // replaceWith
    24. var replaceField = document.createElement("select");
    25. replaceField.setAttribute("name", "newProject");
    26. replaceField.setAttribute("id", "selectProject");
    27. var newOption = document.createElement("option");
    28. newOption.appendChild(document.createTextNode( "Plan B" ));
    29. newOption.setAttribute("value", "2");
    30. replaceField.appendChild(newOption);
    31. var newOption = document.createElement("option");
    32. newOption.appendChild(document.createTextNode( "Projekt A" ));
    33. newOption.setAttribute("value", "1");
    34. replaceField.appendChild(newOption);
    35. oldRef.firstChild.data = "Neues Projekt anlegen?";
    36. }
    37. // replace
    38. element.replaceChild(replaceField, oldField);
    39. if ( currentvalue == "selectProject")
    40. currentvalue = "newProject";
    41. else
    42. currentvalue = "selectProject";
    43. }
    44. </script>
    45. <BODY>
    46. <a href="#" onClick="javascript:newProject()" id="switchRef">asdad</a>
    47. <!-- MEIN TAG -->
    48. <div id="switch"><div id="selectProject">kllk</div></div>
    49. </BODY>
    50. </HTML>
    Alles anzeigen


    Ich glaube du siehst mehr als wir. Oder hast du nicht javascript gemeint? Und was zeigt Firefox in Extras -> Fehler-Konsole?
  • Okay, hast mich überzeugt. Es geht.

    Aber, wieso geht es nicht in meinem Tabellenkonstrukut?

    Meine Seite war :

    Quellcode

    1. <script type="text/javascript">
    2. var currentvalue = "selectProject";
    3. var options = "";
    4. function newProject() {
    5. // parent
    6. var element = document.getElementById("switch");
    7. var oldField = document.getElementById(currentvalue);
    8. var oldRef = document.getElementById("switchRef");
    9. if ( currentvalue == "selectProject" )
    10. {
    11. // replaceWith
    12. var replaceField = document.createElement("input");
    13. replaceField.setAttribute("type", "text");
    14. replaceField.setAttribute("name", "newProject");
    15. replaceField.setAttribute("value", "Neues Projekt");
    16. replaceField.setAttribute("id", "newProject");
    17. oldRef.firstChild.data = "Zurück zur Liste?";
    18. }
    19. else if ( currentvalue == "newProject")
    20. {
    21. // replaceWith
    22. var replaceField = document.createElement("select");
    23. replaceField.setAttribute("name", "newProject");
    24. replaceField.setAttribute("id", "selectProject");
    25. <--{foreach from=$projects item=project}--!>
    26. var newOption = document.createElement("option");
    27. newOption.appendChild(document.createTextNode( "<--{$project.title}--!>" ));
    28. newOption.setAttribute("value", "<--{$project.id}--!>");
    29. replaceField.appendChild(newOption);
    30. <--{/foreach}--!>
    31. oldRef.firstChild.data = "Neues Projekt anlegen?";
    32. }
    33. // replace
    34. element.replaceChild(replaceField, oldField);
    35. if ( currentvalue == "selectProject")
    36. currentvalue = "newProject";
    37. else
    38. currentvalue = "selectProject";
    39. }
    40. </script>
    41. <form action="editReference.php" method="post">
    42. <input type="hidden" name="id" value="{$edit.id}">
    43. <table width="700" class="" border="1">
    44. <tr>
    45. <td width="200">Projekt:</td>
    46. <--{ if $projects != "" }--!>
    47. <td id="switch" width="350" align="left">
    48. <select name="selectProject" id="selectProject" onClick="switchMenu">
    49. <--{foreach from=$projects item=project}--!>
    50. <option value="{$project.id}" <--{if $project.id == $edit.project}--!> selected <--{/if}--!>><--{$project.title}--!></option>
    51. <--{/foreach}--!>
    52. </select>
    53. </td>
    54. <td width="150" align="left"><a href="#" onClick="javascript:newProject()" id="switchRef">Neues Projekt anlegen?</a></td>
    55. <--{else}--!>
    56. <td><input type="text" name="newProject" value="Neues Projekt"></td>
    57. <--{/if}--!>
    58. </tr>
    59. <tr>
    60. <td>Titel:</td>
    61. <td><input type="text" name="title" value="<--{$edit.title}--!>"></td>
    62. </tr>
    63. <tr>
    64. <td colspan="2"><input type="submit" name="submit" value="Speichern"><input type="submit" name="submit" value="Verwerfen"></td>
    65. </tr>
    66. </table>
    67. </form>
    Alles anzeigen


    hmmm...