Question

J'ai ce code HTML:

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

Je voudrais cliquez sur (le). Je ne peux pas changer quoi que ce soit sur le côté HTML. Quand je fais getElementById("submit").click(), je reçois ceci:

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

Les conseils?

Était-ce utile?

La solution

Puisque vous ne pouvez pas modifier le code HTML réel (pour ajouter l'attribut id), et vous voulez que ce soit multi-navigateur, vous en boucle pourrait sur l'ensemble des éléments d'entrée et vérifier les attributs de type et de valeur jusqu'à ce qu'il correspond à votre le bouton d'envoi:

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();
}

Autres conseils

NOTE: NE JAMAIS appeler quoi que ce soit sous une forme « Soumettre »! Il cachera les années de formulaire soumettre un événement de script.

Vous avez plusieurs façons d'accéder au bouton

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

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

Vieux IEs serait l'ombre le nom pour que vous puissiez utiliser getElementById sur un nom, mais il est pas recommandé.

Des méthodes plus anciennes:

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

où 0 est le premier élément de la page nommée soumettre.

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

forms[0] est la première forme et elements[0] est le premier élément

ou

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

("form")[0] est le premier formulaire sur la page et elements[0] est le premier élément

Vous utilisez getElementById mais vous ne disposez pas d'un attribut id sur votre entrée. Tout simplement parce que IE fubars totalement l'espace de noms et traite name attribue un peu comme les attributs id ne signifie pas que vous devriez.

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

La question immédiate que je peux voir est que vous n'avez pas attribué id submit à votre entrée, donc cela ne fonctionnera pas:

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

sauf si vous spécifiez l'identifiant ainsi:

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

Il n'y a aucun élément avec l'ID « Soumettre » - vous avez un élément nom « soumettre ». Comme Dylan souligne, jQuery serait tout plus facile, mais vous pouvez réparer vous-même. Si vous ne pouvez pas modifier le code HTML, faire quelque chose comme ceci:

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 ...

Votre entrée n'a pas d'attribut id ne peut donc pas être récupéré par id. Utilisez cette place.

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

Vous pouvez regarder dans jQuery. Il fait tout cela, beaucoup plus facile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top