2010-12-31 2 views
1

У меня есть этот HTML:нажмите() кнопка под названием 'отправить' в Javascript

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

я хотел нажать() его. Я не могу ничего изменить с HTML-стороны. . Когда я getElementById ("отправить") нажмите кнопку(), я получаю это:

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

Любые намеки?

ответ

2

Поскольку вы не можете редактировать фактический HTML (добавить атрибут ID), и вы хотите, чтобы это кросс-браузер, вы могли бы перебираем все элементы ввода и проверки атрибутов типа и значения, пока он не соответствует вашей кнопки отправки:

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

Возможно, вы захотите изучить jQuery. Это делает все так, намного проще.

1

Вы используете getElementById, но у вас нет атрибута id на вашем входе. Просто потому, что IE полностью путает пространство имен и обрабатывает атрибуты name, несколько похожие на атрибуты id, не означает, что вы должны.

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

Непосредственным вопрос я вижу в том, что вы не назначили идентификатор submit на свой вход, так что это не будет работать:

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

, если не указать идентификатор, а также:

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

Ваш вход не имеет атрибута id, поэтому он не может быть восстановлен идентификатором. Используйте это вместо этого.

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

Благодаря , Есть ли функция getElementByName? – Karlo

+0

@user https://developer.mozilla.org/en/DOM/document.getElementsByName –

0

Там нет элемента с идентификатором «отправить» - у вас есть элемент под названием «представить». Как указывает Дилан, jQuery сделает все проще, но вы можете исправить это самостоятельно. Если вы не можете изменить HTML, сделать что-то вроде этого:

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

ПРИМЕЧАНИЕ: никогда ничего не заехать в форме «представить»! Он скроет событие отправки формы из сценария.

У вас есть много способов доступа кнопки

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

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

Старого ИЭ бы тень имени, чтобы вы могли использовать getElementById по имени, но это не рекомендуется.

Старые методы:

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

где 0 является первый элемент на странице с именем представить.

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

, где forms[0] является первой формой и elements[0] является первым элементом

или

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

, где ("form")[0] является первой формой на странице и elements[0] является первым элементом