Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用replaceChild更改输入类型在IE8中不起作用_Javascript - Fatal编程技术网

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

Javascript 使用replaceChild更改输入类型在IE8中不起作用,javascript,Javascript,我正在使用下面的代码更改输入类型onfocus并将其重置为text onblur。但这是行不通的 HTML <input type="password" onfocus="changeInputType(this,'text')" onblur="changeInputType(this,'password')"> 这是小提琴。它不起作用。假设您想将type属性更改为password on blur和text on focus,那么

我正在使用下面的代码更改输入类型onfocus并将其重置为text onblur。但这是行不通的

HTML

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

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

假设您想将type属性更改为password on blur和text on focus,那么代码不起作用的原因不止一个

  • 您的替换调用中缺少双引号:
    replace('type=password','type=text')

  • 调用
    replaceChild
    时,会删除标记并触发另一个模糊事件,从而导致错误

  • 您没有在任何地方使用
    oType
    变量

  • 仅使用以下代码中的type属性更容易:

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

    您的小提琴不起作用,因为您将整个脚本包装在
    onLoad
    处理程序中,因此
    changeInputType
    不是全局函数,因此无法从DOM0事件属性调用它。(奇怪的是,jsFiddle的默认设置是在
    onLoad
    中进行包装,您不是第一个与之发生冲突的人。)@T.J.Crowder现在fiddle可以工作了,因为将类型从密码更改为文本不起作用。它将默默地失败。
    function changeInputType(oldObject, oType) {
        oldObject.type = oType;
    }