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

搜索了下资料是因为 当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. Android-现场保护

    现场保护 当一个活动进入到了停止的状态,是有可能被系统回收的,我们都学过Activity的生命周期 当活动处于onPause() ,onStop() ,onDestroy() 三种状态时程序可能会被A ...

  2. 1207--ATM自动取款机的实现

    #include <stdio.h> #include <stdlib.h> #include <stdbool.h> //提示用户操作 void alert(ch ...

  3. c#窗体的传值方法

    了解了窗体的显示相关知识,接着总结一下窗体的传值方法:  .通过构造函数  特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中         int value1;  ...

  4. Linux脚本中使用特定JDK

    有时linux系统中装了很多应用,我们又不能覆盖系统中设置的版本,此时我们就需要在脚本文件中设置特定版本. export JAVA_HOME= export CLASSPATH=.:$JAVA_HOM ...

  5. C++服务器设计(二):应用层I/O缓冲

    数据完整性讨论 我们已经选择了I/O复用模型作为系统底层I/O模型.但是我们并没有具体解决读写问题,即在我们的Reactor模式中,我们怎么进行读写操作,才能保证对于每个连接的发送或接收的数据是完整的 ...

  6. 读取xml文件转成List<T>对象的两种方法(附源码)

    读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法, ...

  7. Lost Cows(BIT poj2182)

    Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10609   Accepted: 6797 Descri ...

  8. Java中的深复制与浅复制

    1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不 复制它所引用的对象. ...

  9. Debain 7.2安装配置

    一 下载安装Debian 7.2 安装debian CD1,在最后一步,使用网络安装基本界面. 二 修改源 cd /etc/apt mv sources.list sources.list.bak g ...

  10. ASP.NET用户自定义控件配置

    一直以来开发中碰到要写自定义控件的时候总是习惯性的找度娘,而没有自己记住,结果今天就悲剧了,找了半天才找到,想想还是自己积累起来吧! 第一种配置方式: 配置写在webconfig文件中,位置如下: w ...