由于JavaScript事件有很多,例如:

鼠标事件:onclick

键盘事件:onkeydown、onkeypress

表单事件:onblur、onchange

窗口事件属性:onerror、onload

因此,如果你遇到其它的JavaScript事件调用函数失效,解决方法也同理。

以我这里为例子:

今天我在调试代码的时候,发现我的纯原生JavaScript代码中的onblur事件调用函数失效了,没有调用成功,调试得到的结果是:

undefined

原因:

首先,我的函数是已经存在的,如果函数不存在就会出现“ xxxx is not a function“这样的错误。

因此,最终原因是我自己代码错了,多增加了一个括号所引起的。

解决方法

我错误的代码如下:

document.getElementById('alias').onblur = AliasUnique();

正确代码如下:

//console.log(document.getElementById('alias').onblur = AliasUnique);

document.getElementById('alias').onblur = AliasUnique;

function AliasUnique(){

var alias = document.getElementById('alias').value;

if(alias){

var xmlhttp;

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4 && xmlhttp.status==200)

{

console.log(xmlhttp.responseText);

document.getElementById('alias').value = xmlhttp.responseText;

document.getElementById('alias').setAttribute("readonly","readonly");

document.getElementById('alias').style.color="#d2d2d2";

document.getElementById('alias').onblur = '';

}

};

var data = "alias="+document.getElementById('alias').value+"&mode=alias"+"&token=<?php echo $get_token; ?>";

console.log(data);

xmlhttp.open("POST","<?php echo $HOMEURL.$ADMIN_ADDRESS;?>?type=article&action=ajax",true);

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlhttp.send(data);

}

}

我现在再去调式,结果如下:

总结:

编程写代码的时候一定要学会调试,有时候就是细节的问题,一个小括号也能引出大BUG。

html onblur 函数执行了2次,JavaScript“onblur事件”调用函数失效 原因与解决方法相关推荐

  1. malloc函数分配内存失败的原因及解决方法

    原文链接:http://blog.csdn.net/lighthear/article/details/70146602 malloc函数分配内存失败的原因及解决方法 先说结论 malloc()函数分 ...

  2. jquery ajax 不执行success,jQuery通过ajax方法获取json数据不执行success的原因及解决方法...

    1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准 ...

  3. “adb不是内部或外部命令,也不是可执行的应用程序”错误原因及解决方法

    用SQLite时,可能会出现这样的错误. 原因可能是环境变量PATH没有配置或配置不正确.应该把adb.exe 所在目录加入到PATH环境变量.例如:C:\Program Files\android- ...

  4. jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法

    jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法 参考文章: (1)jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法 (2)https: ...

  5. layui表单提交使用form.on(‘submit(sub)‘,function (){}) 使用ajax请求时回调不执行的原因及解决方法

    layui表单提交使用form.on('submit(sub)',function (){}) 使用ajax请求时回调不执行的原因及解决方法 参考文章: (1)layui表单提交使用form.on(' ...

  6. 【c++】23.【函数指针】定义? 为什么不直接调用函数而要使用函数指针?

    1. 函数指针及其定义和用法,C语言函数指针详解 原文链接:http://c.biancheng.net/view/228.html 什么是函数指针 如果在程序中定义了一个函数,那么在编译时系统就会为 ...

  7. 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n。如果输入的是奇数调用1/1+1/3+...+1/n;...

    package TestFor0322;import java.util.Scanner;public class Demo3For奇偶数 {/*** 编写一个函数,输入n为偶数时,调用函数求1/2+ ...

  8. spring定时任务执行两次的原因与解决方法

    spring定时任务执行两次的原因与解决方法 参考文章: (1)spring定时任务执行两次的原因与解决方法 (2)https://www.cnblogs.com/yolanda-lee/p/7339 ...

  9. 执行cmd命令时:因为在此系统上禁止运行脚本的解决方法

    执行cmd命令时:因为在此系统上禁止运行脚本的解决方法 参考文章: (1)执行cmd命令时:因为在此系统上禁止运行脚本的解决方法 (2)https://www.cnblogs.com/cat-eol/ ...

最新文章

  1. [c#基础]ICloneable接口
  2. Emgu-WPF学习使用-识别二维码的位置
  3. CPSR和SPSR(转)
  4. linux的周期计划任务叫atd,linux计划任务
  5. python打开是什么颜色-python图片颜色
  6. boost::mpi模块在序列化数据上测试 any_source
  7. Lattice Diamond 和 ispLEVER 的不同之处
  8. ado.net mysql 事务_ADO.NET事务
  9. 【XML】XML语法格式提要
  10. 新UI云开发壁纸小程序源码(新修复版带编译教程)
  11. 蚂蚁区块链正式升级为蚂蚁链:首次公布“日活”超1亿
  12. centos7.2 使用rpm安装jdk8
  13. Git撤销修改、回退版本相关命令
  14. dev gridcontrol 单选框效果
  15. 性格测试系统v1.0
  16. MySQL: GTID简介,gtid_executed和gtid_purged概念
  17. 学习笔记-WinRM
  18. 台风怎么看内存颗粒_光威TYPE普通马甲内存条,南亚ADIE HR颗粒稳超3200MHZ
  19. 微信小程序各错误码及原因自用表
  20. DAVSE VCC-H10004K超高清会议摄像机

热门文章

  1. [LOJ 6485]LJJ 学二项式定理
  2. Linux的常用基础命令
  3. GaussDB数据dump实现完全同步
  4. Java并发编程的艺术 记录(三)
  5. [Lydsy1806月赛] 最长公共子序列
  6. connect by prior id= pid start with id='1' 树结构查询
  7. 类与对象- 课后作业1
  8. HTML浅学入门---基础知识 (1)基本规则
  9. jboss7.1.0配置数据库(mysql)
  10. Spring Security 3.0控制一个帐号只允许登录一次的问题