TorstenTKH: scrollintoview() und Firefox 2

Hallo,
ich habe eine HTML-Tabelle, die über XML und XSLT mit Daten gefüllt wird.
Jede Zeile hat am Ende einen Link, der die Editierung der Zeile ermöglichen soll.
Das Ansprechen der Zeile über Ajax stellt soweit kein Problem dar. Textfelder werden in input-Felder umgewandelt, sobald edit angeclickt wird.
Auch die focus()-Funktion arbeitet einwandfrei.
Das einzige Problem, das ich momentan nicht lösen kann, ist, dass wenn die Tabelle über den Bildschirm hinausgeht, die betreffende Zeile angezeigt werden soll.
Versuche mit srollIntoView haben bis jetzt zu keinem Ergebnis geführt.
Unter Firefox springe ich immer an den Anfang der Seite, sobald "edit"  benutzt wird.
Opera verursacht dieses Problem nicht.
Ein prinzipielles Problem mit scrollintoview scheint aber nicht zu existieren, da das Beispiel aus SELFHTML funktioniert.
Durch ein wenig Ausprobieren scheint das Setzen auf den Seitenbeginn stattzufinden, wenn ich die Funktion verlasse, die bei onclick des Links "edit" aufgerufen wird. Diese steuert lediglich die Umwandlung der Text- in Inputfelder.
Hat jemand Erfahrung mit scrollintoview oder alternative Ideen?
Erfahrungen mit dem IE kann ich noch nicht geben, da das Programm hier noch an einer früheren Stelle hängt.
Anbei der Code der Funktion, die bei "edit" aufgerufen wird.

Ich hoffe, dass ich mich nicht zu unklar ausgedrückt habe.

Grüße
Torsten

[code=js]
function editId(id, editMode)
{
  // gets the <tr> element of the table that contains the table
  var productRow = document.getElementById(id).cells;
  // are we enabling edit mode?
  if(editMode)
  {
    // we can have only one row in edit mode at one time

if(editableId) editId(editableId, false);
    // store current data, in case the user decides to cancel the changes
    save(id);
    // create editable text boxes
    productRow[1].innerHTML =
         '<input class="editAnfall" type="text" name="Anfall" size="10" ' +
         'value="' + productRow[1].innerHTML + '">';
    productRow[2].innerHTML =
         '<textarea class="editBeschreibung" name="Beschreibung" size="255" cols="50" rows="3">' +
         productRow[2].innerHTML + '</textarea>';
    productRow[3].innerHTML =
         '<input class="editWert" type="text" name="Wert" size="5" ' +
         'value="' + productRow[3].innerHTML + '">';
    productRow[4].getElementsByTagName("select")[0].disabled = false;
    productRow[5].innerHTML =
         '<input class="editStdSatz" type="text" name="StdSatz" size="5" ' +
         'value="' + productRow[5].innerHTML + '">';
  //productRow[6] Benutzername wird nicht bearbeitet
    productRow[7].getElementsByTagName("input")[0].disabled = false;
    productRow[8].innerHTML='<a href="#" onclick="updateRow(document.forms.grid_form_id,'+id+')">Update</a>'+
          '<br/><a href="#" onclick="deleteRow(document.forms.grid_form_id,'+id+')">Delete</a>'+
          '<br/><a href="#" onclick="editId('+id+',false)">Cancel</a>';

// save the id of the product being edited
    editableId = id;
    document.getElementById(editableId).scrollIntoView(true);
    productRow[1].getElementsByTagName("input")[0].focus();

//alert("Ende von editID");
  }
  // if disabling edit mode...
  else
  {
     if (document.forms.grid_form_id.Anfall.value)
     {
     productRow[1].innerHTML = document.forms.grid_form_id.Anfall.value;
     productRow[2].innerHTML = document.forms.grid_form_id.Beschreibung.value;
     productRow[3].innerHTML = document.forms.grid_form_id.Wert.value;
     productRow[4].getElementsByTagName("select")[0].disabled = true;
     productRow[5].innerHTML = document.forms.grid_form_id.StdSatz.value;
     //productRow[6] Benutzername wird nicht bearbeitet
     productRow[7].getElementsByTagName("input")[0].disabled = true;
     productRow[8].innerHTML = '<a href="#" onclick="editId(' + id +
                                ',true)">Edit</a>';
        }

// no product is being edited
    editableId = null;
  }
}
[/code]

  1. Hallo Thorsten,

    <a href="#" onclick=

    zuerst wird das onclick ausgeführt, anschließend der Teil des href. Also zum Anker mit dem Namen "" gesprungen. Was in allen mir bekannten Browsern dem Seitenanfang entspricht. Ein "return false;" im Eventhandler verhindert dies.

    Grüße,

    Jochen

    --
    Kritzeln statt texten:
    Scribbleboard
    1. Hallo Jochen,
      danke das wars.
      Ich bin ein glücklicher Mensch.

      Grüße
      Torsten