在处理获取焦点时一直不能获取到。

搜索了下资料是因为 当DOM的变化影响了元素的几何属性(宽和高),浏览器需要重新计算元素的几何属性,同样其他元素的几何属性和位置也会因此受到影响。

重排:浏览器会使渲染树中受到影响的部分失效,并重新构造渲染树。

重绘:完成重排后,浏览器会重新绘制受影响的部分到屏幕中。

     重排何时发生:

  • 添加或删除可见的DOM元素
  • 元素位置的改变
  • 元素尺寸改变
  • 内容改变
  • 页面渲染器初始化
  • 浏览器窗口尺寸的改变

参考http://zhangyaochun.iteye.com/blog/1681641

在原来代码里使用了innreHTML来改变原有内容,我将它改为使用dom来进行操作

//要改变的内容
window.onload=function(){
var supcodea = document.createElement("p");
var supcode_text = document.createTextNode("*");
supcodea.appendChild(supcode_text);
document.getElementById("msg_code").appendChild(supcodea);
var supnamea = document.createElement("p");
var supname_text = document.createTextNode("*");
supnamea.appendChild(supname_text);
document.getElementById("msg_name").appendChild(supnamea);
}
//改变前后
function displayAjaxLoading (element,msg) {
while (element.hasChildNodes()) {
element.removeChild(element.lastChild);
}
var content = document.createElement('p');
var content_text = document.createTextNode(msg);
content.appendChild(content_text);
element.appendChild(content);
} //应用改变
var flag=false;
var supCode = supSaveInfo.supcode;
var supName = supSaveInfo.supname;
switch(true) {
case supCode == "" || !supCode:
var msg_codes = document.getElementById("msg_code");
displayAjaxLoading(msg_codes,"请输入供应商代码");
document.getElementById("supcode").focus();
flag=true;
break;
default:
var msg_codes = document.getElementById("msg_code");
displayAjaxLoading(msg_codes,"*");
}
switch(true) {
case supName == "" || !supName:
var msg_codes = document.getElementById("msg_name");
displayAjaxLoading(msg_codes,"请输入供应商名称");
document.getElementById("supname").focus();
flag=true;
break;
default:
var msg_codes = document.getElementById("msg_name");
displayAjaxLoading(msg_codes,"*");
}
switch(true) {
case (supCode == "" || !supCode) && (supName == "" || !supName):
displayAjaxLoading(msg_codes,"请输入供应商代码");
displayAjaxLoading(msg_codes,"请输入供应商名称");
document.getElementById("supcode").focus();
flag=true;
break;
default:
break;
}
/*if(supSaveInfo.supcode==""||!supSaveInfo.supcode){
var msg_codes = document.getElementById("msg_code");
displayAjaxLoading(msg_codes,"请输入供应商代码");
document.getElementById("supcode").focus();
flag=true;
return;
}else{
var msg_codes = document.getElementById("msg_code");
displayAjaxLoading(msg_codes,"*");
}
if(supSaveInfo.supname==""||!supSaveInfo.supname){
var msg_codes = document.getElementById("msg_name");
displayAjaxLoading(msg_codes,"请输入供应商名称");
document.getElementById("supname").focus();
flag=true;
return;
}else{
var msg_codes = document.getElementById("msg_name");
displayAjaxLoading(msg_codes,"*");
}*/
if(flag){
}else
addSave(); };

HTML

<tr style="height:28px">
<td align="right" width="130px" height=20px><label class="Validform_label"> 供应商代码:</label></td>
<td align="right" class="value" width="120px"><input class="inputxt" style="width: 180px; height:20px" id="supcode" name="supcode""></input></td>
<td id="msg_code" style="color:red;width:300px"></td>
</tr> <tr style="height:28px">
<td align="right" width="130px" height=20px><label class="Validform_label">供应商名称:</label></td>
<td align="right" class="value" width="120px"><input class="inputxt" style="width: 180px; height:20px" id="supname" name="supname""></input></td>
<td id="msg_name" style="color:red;width:300px"></font></td>
</tr>

这样就可以了。

DOM重绘对focus的影响的更多相关文章

  1. Dom 重绘重排

    https://juejin.im/entry/590801780ce46300617c89b8   DOM 重绘重排

  2. js 性能篇--dom 重绘 重排 节流

    浏览器下载完页面中的所有组件----HTML标记,Js,CSS,图片等之后会解析并生成两个内部数据结构: DOM树  -------- 表示页面结构 渲染树   -------- 表示DOM节点如何显 ...

  3. 浏览器的重绘(repaints)与重排(reflows)

    转:http://www.css88.com/archives/4991#more-4991 在项目的交互或视觉评审中,前端同学常常会对一些交互效果质疑,提出这样做不好那样做不好.主要原因是这些效果通 ...

  4. 浏览器的重绘repaints与重排reflows深入分析

    重绘是一个元素外观的改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观,接下来将详细介绍,需要了解的朋友可以参考下: 在项目的交互或视觉评审中,前端同学常常会对一些交互效果质 ...

  5. 回流&重绘

    浏览器加载解析页面:把HTML解析为DOM树,解析CSS生成CSSOM树,HTML DOM树和CSSOM树组合构建render树,首次触发回流和重绘后将页面结构信息发送给GPU进行绘制渲染. 回流:当 ...

  6. 关于DOM的操作以及性能优化问题-重绘重排

     写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...

  7. JS性能--DOM编程之重排与重绘

    浏览器下载完页面中的所有组件----HTML标记,Js,CSS,图片等之后会解析并生成两个内部数据结构: DOM树  -------- 表示页面结构 渲染树   -------- 表示DOM节点如何显 ...

  8. 160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘

    一.浏览器渲染页过程描述   1.浏览器解析html源码,然后创建一个DOM树. 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点). DO ...

  9. 浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘。

    一.浏览器渲染页过程描述 1.浏览器解析html源码,然后创建一个DOM树. 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点). DOM树 ...

随机推荐

  1. 上传图片预览,支持IE6

    //说明:图片上传预览插件 //上传的时候可以生成固定宽高范围内的等比例缩放图 //参数设置: //width 存放图片固定大小容器的宽 //height 存放图片固定大小容器的高 //imgDiv ...

  2. Autofac创建实例的方法总结 【转】

    Autofac创建实例的方法总结   1.InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例.这也是默认的创建实例的方式. 官方文档解释:Configure t ...

  3. PHP学习笔记二十三【This】

    <?php Class Person { function test1() { $this->test2();//类里面的方法互相调用要加$this } protected functio ...

  4. 使用图片拉伸resizableImageWithCapInsets

    在仿写QQ会话的时候背景蓝色图片是拉伸而来,但是有些地方是受保护的不能拉伸 所以定义了下面的工具类中的一个方法,专门拉伸图片 UIImageResizingModeStretch:拉伸模式,通过拉伸U ...

  5. iOS之本地推送(前台模式与后台模式)

    #import "AppDelegate.h" #import "GlobalDefine.h" @interface AppDelegate () @end ...

  6. poj1088 经典DP

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 88296   Accepted: 33100 Description ...

  7. 对面试题(剑指offer)产生的一些思考。

    零散的思绪.另外,推荐<剑指offer>.本文初期大部分思考都从剑指引发. 面试题不单单只是用来面试.其中有很多编程的经验可以学习.就如同我们当年的考试:) 1:鲁棒性的一个方面:边界条件 ...

  8. 读《疯狂Ajax讲义》重点

    1.XMLHttpRequest() 请求的写法(p62) 一个类XMLHttp 因该包含的接口:[1]  XMLHttp.sendRequest("POST",URL,data, ...

  9. 基于VMware的eCos环境编译redboot(脚本配置redboot)

    基于VMware的ecos,redboot及hello world(1)安装请参照[[ecos学习2]wmware运行redboot[方法二]--图形实现配置 ] (2)修改内存布局文件:~/i386 ...

  10. wifi智能插座 一键扫描局域网内插座Ip及其它信息 Python源代码API

    转载请保留原地址. http://www.cnblogs.com/lsqandzy 最近买了几个智能插座玩,插座安装在家里,连接好wifi,不管你人在哪里,通过手机,一键开启或关闭插座电源,想象一下, ...