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

搜索了下资料是因为 当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. mysql设置字体

    如果在linux下重启mysql服务的时候出现Job failed to start,在window下重启失败,这是因为你安装了高版本的mysql(mysql5.5以上),在高版本对字符编码方式修改的 ...

  2. Codeforces Round #280 (Div. 2)E Vanya and Field(简单题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 本场题目都比较简单,故只写了E题. E. Vanya and Field Vany ...

  3. HttpURLConnection详解

    HttpURLConnection详解 07. 五 / J2EE / 没有评论   HttpURLConnection类的作用是通过HTTP协议向服务器发送请求,并可以获取服务器发回的数据. Http ...

  4. [原]C语言实现的快速排序,采用分治策略,递归实现

    #include<stdio.h> #define LEN 8 int a[LEN] = { 5, 2, 4, 7, 1, 3, 2, 6 }; int Partition(int a[] ...

  5. 怎样使用淘宝npm镜像

    淘宝的 NPM 镜像是一个完整的npmjs.org镜像.你可以用此代替官方版本(只读),同步频率目前为 15分钟 一次以保证尽量与官方服务同步. 当前 registry.npm.taobao.org ...

  6. HttpClient连接池抛出大量ConnectionPoolTimeoutException: Timeout waiting for connection异常排查

    转自: http://blog.csdn.net/shootyou/article/details/6615051 今天解决了一个HttpClient的异常,汗啊,一个HttpClient使用稍有不慎 ...

  7. C#中给线程传值并启动

    方法1: ParameterizedThreadStart 委托+Thread.Start 方法 (Object)         private void btnLogin_Click(object ...

  8. POJ 2579 Fiber Network(状态压缩+Floyd)

    Fiber Network Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3328   Accepted: 1532 Des ...

  9. jQuery 局部div刷新和全局刷新方法

    div的局部刷新 $(".dl").load(location.href+".dl");  全页面的刷新方法 window.location.reload( ) ...

  10. struts2采用convention-plugin实现零配置

    最近开始关注struts2的新特性,从这个版本开始,Struts开始使用convention-plugin代替codebehind-plugin来实现struts的零配置. 配置文件精简了,的确是简便 ...