Frage

Ich habe diese HTML:

<input type="submit" name="submit" value="Invoeren" accesskey="s" class="buttons"/>

Ich möchte es klicken (). Ich kann nichts auf der HTML-Seite ändern. Wenn ich es tue getElementById("submit").click(), Ich verstehe das:

>>> document.getElementById("submit").click();
Cannot convert 'document.getElementById("submit")' to object

Irgendwelche Hinweise?

War es hilfreich?

Lösung

Da Sie das tatsächliche HTML (zum Hinzufügen des ID-Attributs) nicht bearbeiten können und dies für einen Querbrowser sein soll, können Sie alle Eingabelemente überschreiten und die Typ- und Wertattribute überprüfen, bis sie mit Ihrer Sendel-Taste übereinstimmt:

function get_submit_button() {
    var inputs = document.getElementsByTagName('INPUT');
    for(var i=0; i < inputs.length; i++) {
        var inp = inputs[i];
        if(inp.type != 'submit') continue;
        if(inp.value == 'Invoeren' && inp.name == 'submit') {
            return inp;
            break; // exits the loop
        }
    }
    return false;
}

function click_submit() {
    var inp = get_submit_button();
    if(inp) inp.click();
}

Andere Tipps

HINWEIS: Rufen Sie niemals etwas in einem Formular "Senden" an! Es wird das Sendenereignis des Formulars vor dem Skript verbergen.

Sie haben viele Möglichkeiten, auf die Taste zuzugreifen

document.querySelector("[name=submit]").click(); // first named button

document.querySelector("#form [name=submit]").click(); // in form with id="form"

Old IES würde den Namen beschatten, damit Sie GetElementById auf einem Namen verwenden können, aber er wird nicht empfohlen.

Ältere Methoden:

document.getElementsByName("submit")[0].click();

wobei 0 das erste Element auf der Seite mit dem Namen Senden ist.

document.forms[0].elements[0].click(); 

wo forms[0] ist die erste Form und elements[0] ist das erste Element

oder

document.getElementsByTagName("form")[0].elements[0].click(); 

wo ("form")[0] ist das erste Formular auf der Seite und elements[0] ist das erste Element

Du benutzt getElementById Aber du hast keine id Attribut für Ihre Eingabe. Nur weil dh den Namespace und behandelt sich total fubars name Attribute etwas wie id Attribute bedeuten nicht, dass Sie es sollten.

<input id="submit" ... />
...
document.getElementById('submit').click();

Das unmittelbare Problem, das ich sehen kann, ist, dass Sie keine ID zugewiesen haben submit Zu Ihrer Eingabe, so dass dies nicht funktioniert:

document.getElementById("submit").........

Es sei denn, Sie geben auch die ID an:

<input id="submit" type="submit" name="submit" value="Invoeren" accesskey="s" class="buttons"/>

Es gibt kein Element mit der ID "Senden" - Sie haben ein Element genannt "einreichen". Wie Dylan betont, würde JQuery alles einfacher machen, aber Sie können es selbst reparieren. Wenn Sie die HTML nicht ändern können, tun Sie so etwas:

var buttons = document.getElementsByTagName("submit");
for (var i=0; i < buttons.length; i++) {
  var button = buttons[i];
  if (button.getAttribute("name") === "submit") {
     button.onclick = whatever ...

Ihre Eingabe hat kein ID -Attribut, sodass es nicht durch ID abgerufen werden kann. Verwenden Sie dies stattdessen.

<input id="submit" type="submit" name="submit" value="Invoeren" accesskey="s" class="buttons"/>

Vielleicht möchten Sie sich JQuery ansehen. Es macht alles so viel einfacher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top