html onblur 函数执行了2次,JavaScript“onblur事件”调用函数失效 原因与解决方法
由于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事件”调用函数失效 原因与解决方法相关推荐
- malloc函数分配内存失败的原因及解决方法
原文链接:http://blog.csdn.net/lighthear/article/details/70146602 malloc函数分配内存失败的原因及解决方法 先说结论 malloc()函数分 ...
- jquery ajax 不执行success,jQuery通过ajax方法获取json数据不执行success的原因及解决方法...
1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准 ...
- “adb不是内部或外部命令,也不是可执行的应用程序”错误原因及解决方法
用SQLite时,可能会出现这样的错误. 原因可能是环境变量PATH没有配置或配置不正确.应该把adb.exe 所在目录加入到PATH环境变量.例如:C:\Program Files\android- ...
- jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法
jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法 参考文章: (1)jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法 (2)https: ...
- layui表单提交使用form.on(‘submit(sub)‘,function (){}) 使用ajax请求时回调不执行的原因及解决方法
layui表单提交使用form.on('submit(sub)',function (){}) 使用ajax请求时回调不执行的原因及解决方法 参考文章: (1)layui表单提交使用form.on(' ...
- 【c++】23.【函数指针】定义? 为什么不直接调用函数而要使用函数指针?
1. 函数指针及其定义和用法,C语言函数指针详解 原文链接:http://c.biancheng.net/view/228.html 什么是函数指针 如果在程序中定义了一个函数,那么在编译时系统就会为 ...
- 编写一个函数,输入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+ ...
- spring定时任务执行两次的原因与解决方法
spring定时任务执行两次的原因与解决方法 参考文章: (1)spring定时任务执行两次的原因与解决方法 (2)https://www.cnblogs.com/yolanda-lee/p/7339 ...
- 执行cmd命令时:因为在此系统上禁止运行脚本的解决方法
执行cmd命令时:因为在此系统上禁止运行脚本的解决方法 参考文章: (1)执行cmd命令时:因为在此系统上禁止运行脚本的解决方法 (2)https://www.cnblogs.com/cat-eol/ ...
最新文章
- [c#基础]ICloneable接口
- Emgu-WPF学习使用-识别二维码的位置
- CPSR和SPSR(转)
- linux的周期计划任务叫atd,linux计划任务
- python打开是什么颜色-python图片颜色
- boost::mpi模块在序列化数据上测试 any_source
- Lattice Diamond 和 ispLEVER 的不同之处
- ado.net mysql 事务_ADO.NET事务
- 【XML】XML语法格式提要
- 新UI云开发壁纸小程序源码(新修复版带编译教程)
- 蚂蚁区块链正式升级为蚂蚁链:首次公布“日活”超1亿
- centos7.2 使用rpm安装jdk8
- Git撤销修改、回退版本相关命令
- dev gridcontrol 单选框效果
- 性格测试系统v1.0
- MySQL: GTID简介,gtid_executed和gtid_purged概念
- 学习笔记-WinRM
- 台风怎么看内存颗粒_光威TYPE普通马甲内存条,南亚ADIE HR颗粒稳超3200MHZ
- 微信小程序各错误码及原因自用表
- DAVSE VCC-H10004K超高清会议摄像机
热门文章
- [LOJ 6485]LJJ 学二项式定理
- Linux的常用基础命令
- GaussDB数据dump实现完全同步
- Java并发编程的艺术 记录(三)
- [Lydsy1806月赛] 最长公共子序列
- connect by prior id= pid start with id='1' 树结构查询
- 类与对象- 课后作业1
- HTML浅学入门---基础知识 (1)基本规则
- jboss7.1.0配置数据库(mysql)
- Spring Security 3.0控制一个帐号只允许登录一次的问题