在IE8中使用replaceChild更改输入类型不起作用

时间:2012-12-14 18:23:15

标签: javascript

我使用下面的代码更改onfocus的输入类型并将其重置为文本onblur。但这不起作用

HTML

 <input type="password" onfocus="changeInputType(this,'text')"
                        onblur="changeInputType(this,'password')">

JS

  function changeInputType(oldObject, oType) {
     var newObject = document.createElement('input');
     var wrapper= document.createElement('div');
     wrapper.innerHTML= oldObject.outerHTML.replace('type=password','type=text');
     var newObject = wrapper.firstChild;
     oldObject.parentNode.replaceChild(newObject,oldObject);
     return newObject;
  }

here是小提琴。它不起作用。

1 个答案:

答案 0 :(得分:0)

假设您想要将模式属性更改为模糊时的密码和焦点上的文本,那么您的代码不会因多种原因而起作用。

  1. 您在替换号码中缺少双引号:replace('type=password','type=text')

  2. 当您致电replaceChild时,标签会被移除,并会触发另一个模糊事件,从而导致错误。

  3. 您没有在任何地方使用oType变量。

  4. 更容易使用类型属性,如下面的代码:

    function changeInputType(oldObject, oType) {
        oldObject.type = oType;
    }