заменить ввод с помощью JavaScript - PullRequest
1 голос
/ 15 декабря 2009

Привет всем, я пытаюсь заменить тип ввода «текст» на «пароль». И это работает со следующим кодом:

function replaceT(obj){
            var newO=document.createElement('input');
            newO.setAttribute('type','password');
            newO.setAttribute('name',obj.getAttribute('name'));
            obj.parentNode.replaceChild(newO,obj);
            newO.focus();
            }

Но я хочу добавить класс моего предыдущего ввода к новому вводу, и я попробовал что-то вроде этого:

function replaceT(obj){
            var newO=document.createElement('input');
            newO.setAttribute('type','password');
            newO.setAttribute('className' obj.getAttribute('class'));
            newO.setAttribute('name',obj.getAttribute('name'));
            obj.parentNode.replaceChild(newO,obj);
            newO.focus();
            }

Что я делаю не так, или, если это невозможно, как установить новый класс вручную .. Спасибо

Ответы [ 3 ]

2 голосов
/ 15 декабря 2009

Это должно работать во всех браузерах:

newO.className = obj.className;

Я не уверен, следует ли вам использовать className или class в setAttribute, но что бы это ни было, оно точно такое же, как в getAttribute, так что это определенно неправильно:

newO.setAttribute('className' obj.getAttribute('class'));
2 голосов
/ 15 декабря 2009
newO.setAttribute('className' obj.getAttribute('class'));

Вы используете «className» для установки атрибута, но «class» для его получения. Оба должны быть 'className'.

0 голосов
/ 15 декабря 2009

Извините, что пошел в другом направлении, но почему вы заменяете элемент, а не просто меняете его тип в первую очередь? Чем вам не нужно беспокоиться о добавлении того же className в новый элемент.

Просто быть любопытным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...