klicken () eine Schaltfläche mit dem Namen "Senden" in JavaScript
-
14-10-2019 - |
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?
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.