[JavaScript学习笔记003]Setting onfocus to all input

本文介绍了一种实现网页中输入框获得焦点时样式变化的方法。利用getElementsByTagName遍历所有输入框元素,并通过onfocus和onblur事件动态修改样式。采用!important确保自定义样式的覆盖效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:点击输入框时,高亮显示当前输入框,当然不能在输入框后面写onFocus和onBlur

过程:经过研究资料,发现用getElementsByTagName可以起到控制所有的Input的作用,这样就可以通过className改变样式了。

改进:第一次发布时候,只做了简单增加class和删除class动作,使用后发现程序员的input原来都有自己的cssClass,这样无法还原原来样式。第二次发布使用cStyle全局变量保存当前的样式,以便在失去焦点以后重新还原,使用后发现覆盖原来样式以后,无法保证原来设定的一些属性,如width等,所以使用追加样式,问题是追加的样式无法覆盖掉原来的已经定义过的样式,最后使用!important解决。

目前测试满足系统当前的需求。

相关代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Focus</title>
<script type="text/javascript">
window.onload=function(){
    
     var inputs=document.getElementsByTagName("input");
     var cStyle
    
    
   for(var i=0; i<inputs.length; i++){
                if(inputs[i].type=="text"){

     inputs[i].onfocus= function(){cStyle=this.className;  this.className=cStyle+" fStyle"; };
     // alert(cStyle)
     inputs[i].onblur= function(){this.className=cStyle ;};
    
    }
            }
     }

</script>
<style type="text/css">
<!--
input {
 border: 1px solid #d0d0d0;
 background-color: #efefef;
 font-family:Verdana, Geneva, sans-serif;
 font-size:11px;
 line-height:12px;
 color: #000;
 text-decoration: none;
 
}

.fStyle {
 background-color: #fefefe!important;
 border:1px solid #666666;
}
.bg1 {
 background-color: #0F6;
}
.bg2 {
 background-color: #F30;
}
-->
</style>
</head>

<body>

<input type="text" name="textfield" id="textfield"  class="bg1"/>
<input type="text" name="textfield2" id="textfield2"  class="bg2"/>
<input type="text" name="textfield3" id="textfield3"  disabled="disabled"/>
<input name="textfield4" type="text" id="textfield4" value="200.00" readonly="readonly"/>
<input type="button" name="button" id="button" value="Submit" />


</body>
</html>

转载于:https://www.cnblogs.com/neocong/articles/1688907.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值