2016-02-13 4 views
1

У меня есть небольшая функция, которая может изменить тип ввода формы (я использую его для изменения кнопки для отправки). Я нашел его где-то и не писал его сам, это просто маленький, удобный маленький кусок кода, как это:Динамическая переменная Javascript

function change_input_type(id,x) 
{ 
    var id; 
    var x; 

    // Change input type 
    document.getElementById(id).type = x; 
} 

И я называю это с помощью OnClick:

onClick="change_input_type('myButton','submit'); 

Но Я хочу, чтобы он также мог изменять значение ввода (другой скрытый ввод, который я хочу изменить от 0 до 1 в некоторых случаях). Я знаю, что могу создать еще одну функцию, переименовать ее в change_input_value, а затем изменить document.getElementById (id). тип для document.getElementById (id). значение, но я хочу родовое Funtion, как это:

function change_input(id,x,y) 
{ 
    var id; 
    var x; 
    var y; 

    // Change input 
    document.getElementById(id).x = y; 
} 

И OnClick вроде этого:

onClick="change_input('myButton','type','submit');" 
onClick="change_input('myHidden','value','1');" 

Но когда я пытаюсь, что это не будет работать. Я обычно работаю с php, и я не очень разбираюсь в JavaScript ... поэтому мне интересно, что я здесь делаю неправильно?

+0

У вас есть possibilty в вашем проекте использовать JQuery. Часто легче установить свойства/значения DOM с помощью этой библиотеки. Особенно, если вы новичок в JS – Martin

+0

@Tushar Кроме того, что он не перезаписывается в Chrome и FF, вы уверены, что он должен вести себя именно так? Оператор 'var' просто связывает имя с областью действия функции, как это делает параметр. –

+0

@ t.niese Нет, это не перезаписывает параметры. Виноват. – Tushar

ответ

5

Доступ к объекту через [..] (обозначение скобки) позволит вам использовать значение переменной как имя свойства.

document.getElementById(id)[x] = y; 

Проверьте, пожалуйста, MDN Property accessor - bracket notation.

3

Просто используйте setAttribute() метод, чтобы установить значение атрибута с именем x в y

// Change input type 
document.getElementById(id).setAttribute(x, y); 

http://www.w3schools.com/jsref/met_element_setattribute.asp

+0

Следует отметить, что 'setAttribute' не обязательно будет иметь непосредственный заметный эффект. Например. изменяя атрибут 'value', если свойство' value' уже было изменено. Атрибуты должны рассматриваться как значения по умолчанию, а затем значения (свойства). И w3schools - это лучшая ссылка, в которой они вводят setAttribute с точно такими атрибутами, где вы обычно не должны его использовать. –

Смежные вопросы