`

引人注目的输入框

阅读更多

闪烁的东西往往会吸引别人的注意。你可以用它来强调一些比较重要的内容。文本框也可以做到。

将如下javascripts代码加入紧靠</BODY>上面的位置。

<script language="JavaScript1.2">
<!--//
if (document.all&&document.all.flashit){

var flashelement=document.all.flashit
if (flashelement.length==null)
flashelement[0]=document.all.flashit

function changecolor(which){
if (flashelement[which].style.color=='')
flashelement[which].style.color="red"
else
flashelement[which].style.color=""
}


if (flashelement.length==null)
setInterval("changecolor(0)",1000)
else
for (i=0;i<flashelement.length;i++){
var tempvariable='setInterval("changecolor('+i+')",'+'1000)'
eval(tempvariable)
}

}
//-->
</script>

然后在凡是要产生闪烁效果的地方加上:id="flashit" 即可。例如:

(1):
<textarea name="textfield" cols="40" rows="8" id="flashit">
(2):
<input type="text" name="textfield" value="文本框也可以的" size="40" id="flashit">
(3):
<input type="submit" name="Submit" value="Submit" id="flashit">

 

 

分享到:
评论
21 楼 02221021 2010-03-29  
帮你算了下。 按每半秒一次, 自增到超过int最大值 , 大概要2.850223767856284e + 300年。

应该够用了吧
20 楼 happysoul 2010-03-29  
汗。。。我不知道你怎么测的。。。
你测的代码是用我最开始想到的,不过你把var o = document.getElementById("f"); 也放到循环里面当然时间要长很多很多了。。。

对于你的代码,500ms可能不是一个很短的时间,如果换成了1ms的话你的自增总会有增到数字最大值的时候...?这个你能保证不发生么?

o.style.color=o.style.color=="red"?"black":"red";
这个方法算是完全利用代码本身的属性了

第一页的代码只是随手一写,完全没有考虑,所以我才有后面不断修改的精简版

最后,我的JS只算是初级自学,完全是兴趣使然,拿出来只是为了大家分享一下而已,毕竟我有自己的工作,又不是JS方面的,研究时间长了用处也不大...
LS的代码也拿走学习,会不会有溢出的危险那只能先当做问号处理了,不过如果非要用判断的话我依旧推崇用true false代替你的自增,代码的稳定和安全永远放到第一位!效率么... 我相信你把 getElements放到外面10000的数据量不会差太多的
19 楼 02221021 2010-03-29  
IE7下顺便给你个数据.先是你的.测试代码:
var d = new Date;

for (var i = 0; i < 10000; i++){
var o = document.getElementById("f");
o.s=(!o.s)?false:true;
o.style.color = o.s?"red":"";
o.s=(o.s)?false:true;
}

alert (new Date - d);

耗时 953ms

再是我的
var d = new Date
~function(){
var o = document.getElementById("f");
var i = 0;
var colors = ['red', ''];
for (var j = 0; j < 10000; j++){
o.style.color = colors[i++ % 2];

}
}()

alert (new Date - d);

耗时138ms.

哦, 当然, 我给页面多加了200个节点进去.

18 楼 02221021 2010-03-29  
happysoul 写道
不清楚你的 i 如果不限制一直循环下去会怎样... 如果大的程序里面随处都是这个后果是会很恐怖的,尤其在游戏里面,最后绝对会内存溢出,虽然这个过程是很缓慢的
减少不必要的变量使用,虽然js不像c那样需要考虑内存的使用

按照jquery的思路再发个再度精简的代码 多个标签的可以按你的代码考虑使用document.getElementsByName

<input type="text" name="xx" value="再再精简代码" id="f">
<script>
setInterval(function(){
var o = document.getElementById("f");
o.style.color=o.style.color!="red"?"red":"black";
},500);
</script>



瞎扯蛋. 没听过i能自增到内存溢出. 变量也只是局部变量, 清清楚楚的. 你那样每隔半秒取一次document.getElementById和每隔半秒多余读一次它的

style.color才是效率杀手. 我估计你这种代码风格, 别说大型游戏, 写个贪食蛇都能搞死机. 随意给节点添

加自定义属性更是瞎扯. 没听过html4 strict罢了, firefox里至少也要跑跑看吧? 而且o.s=(!o.s)?

false:true; 这个三目运算真是丑晕了. !!没用过吗?


17 楼 happysoul 2010-03-29  
不清楚你的 i 如果不限制一直循环下去会怎样... 如果大的程序里面随处都是这个后果是会很恐怖的,尤其在游戏里面,最后绝对会内存溢出,虽然这个过程是很缓慢的
减少不必要的变量使用,虽然js不像c那样需要考虑内存的使用

按照jquery的思路再发个再度精简的代码 多个标签的可以按你的代码考虑使用document.getElementsByName

<input type="text" name="xx" value="再再精简代码" id="f">
<script>
setInterval(function(){
var o = document.getElementById("f");
o.style.color=o.style.color!="red"?"red":"black";
},500);
</script>

16 楼 02221021 2010-03-29  
多个一起闪烁也不难.


<input type="text" name="textfield" value="赫赫" size="40" id="f">

<input type="text" name="textfield" value="哈哈" size="40" id="f">

<input type="text" name="textfield" value="呵呵" size="40" id="f">
<script>

~function(){
var os = document.getElementsByName('textfield');
var colors = ['red', ''];
for (var i = 0, c; c = os[i++];){
~function(c){
var j = 0;
setInterval(function(){
c.style.color = colors[j++ % 2];
},500);
}(c);
}
}()

</script>
15 楼 02221021 2010-03-29  
这个代码最少了吧.
<script>
var i = 0;
setInterval(function(){
document.getElementById("f").style.color = ['red', ''][i++ % 2];
},500);
</script>

不过还是这样写比较妥.

<input type="text" name="textfield" value="赫赫" size="40" id="f">
<script>
~function(){
var o = document.getElementById("f");
var i = 0;
var colors = ['red', ''];
setInterval(function(){
o.style.color = colors[i++ % 2];
},500);
}()

</script>
14 楼 ajonjun 2010-03-29  
,这不是阿亮吗?你也贴代码了啊,不简单.
13 楼 D-tune 2010-03-29  
happysoul 写道
zxsoft 写道
ls,楼主的代码可以一次让多个文本框闪烁的,你的可以吗?


我对jquery的使用仅限于他包装好了 class 选择器。
多个文本闪烁。。。 不过一个简单的闪烁还要第三方插件?
难道什么都要拿别人的么?
杀鸡焉用牛刀

<input type="text" value="好吧,用jquery" size="40" class="f">
<input type="text" value="好吧,用jquery" size="40" class="f">
<script src="jquery.js"></script>
<script>
setInterval(function(){$(".f").css("color",($(".f").css("color")!="red"?"red":"black"))},1000);
</script> 


ok 这样可以了吧,同样的效果,节省你一个插件

同意,很多tx貌似走上了为用而用的歧途了
轻量级的应用非得上大炮,何苦呢
12 楼 happysoul 2010-03-27  
zxsoft 写道
ls,楼主的代码可以一次让多个文本框闪烁的,你的可以吗?


我对jquery的使用仅限于他包装好了 class 选择器。
多个文本闪烁。。。 不过一个简单的闪烁还要第三方插件?
难道什么都要拿别人的么?
杀鸡焉用牛刀

<input type="text" value="好吧,用jquery" size="40" class="f">
<input type="text" value="好吧,用jquery" size="40" class="f">
<script src="jquery.js"></script>
<script>
setInterval(function(){$(".f").css("color",($(".f").css("color")!="red"?"red":"black"))},1000);
</script> 


ok 这样可以了吧,同样的效果,节省你一个插件
11 楼 zxsoft 2010-03-27  
ls,楼主的代码可以一次让多个文本框闪烁的,你的可以吗?

其實這個功能使用裝了 http://plugins.jquery.com/files/jquery.timers-1.2.js.txt 插件(官方 http://plugins.jquery.com/project/timers )的jQuery的話,一句話就可以了


<input type="text" class="flash"  value="aaa"/>
<input type="text" class="flash"  value="bbb"/>
<input type="text" class="flash"  value="ccc"/>

</body>
<script language="JavaScript">
<!--//
var list=$(".flash").everyTime(1000,function(){$(this).css('color',$(this).css('color')=='red'?'black':'red');});;
//-->
</script>
10 楼 happysoul 2010-03-27  
避免有人直接复制上面不看备注大喊有问题重新发个精简的

<input type="text" name="textfield" value="再精简代码" size="40" id="f">
<script>
setInterval(function(){
var o = document.getElementById("f");
o.s=(!o.s)?false:true;
o.style.color=o.s?"red":"";
o.s=(o.s)?false:true;
},500);
</script>
9 楼 lyndon.lin 2010-03-27  
真的比我的简单多啦,多谢共享。你这段代码在所有浏览器都测试过吗?
8 楼 happysoul 2010-03-27  
不懂楼主这么简单的东西非要弄得这么麻烦。。。
<input type="text" name="textfield" value="一个简单的ID有那么麻烦么?" size="40" id="flash">
<script>
function $(id){return document.getElementById(id)}
function c(){
	var o = $("flash");
	o.s=(!o.s)?false:true;
	//我编写的时候这里只有一个 o 不知道为什么提交的时候出现了两个 o ,javaeye 改 bug
	o.style.color=o.s?"red":"";
  	o.s=(o.s)?false:true;
}
var a = setInterval(c,500);
</script>

7 楼 xuanye 2010-03-27  
一个页面里面包含重复的ID是不合适的,用class要好多
6 楼 wing5jface 2010-03-27  
改成document.getElementById后chrome下测试通过,的确起到引人注目的输入框的效果
在线效果可看 hy2999.com   首页右上角搜索输入框
通过id直接操作style,应该也很正常吧,
注:那个站的整体网页不好看,不要批我
(刚玩PHP一天,直接改代码从原PHP连接2000至sqlserver 2005的,也包括配置php,不像java那样直接改class.forName就可以了,还要改很多mssql至sqlserver2005函数名及rewrite的配置,达到从PHP到HTML的静态效果)
5 楼 lyndon.lin 2010-03-27  
多谢两位的建议,回去我去试试。
4 楼 chw8219 2010-03-27  
我测试了下怎么一点效果都没有?
3 楼 moyue 2010-03-27  
document.all
这个是ie特有的,不是标准写法,在标准浏览器中是有问题的,可以写成document.getElementById.
另外楼上建议的对,id换成class更好,id不太合适
2 楼 hengheng 2010-03-26  
"然后在凡是要产生闪烁效果的地方加上:id="flash it" 即可。"

换成.凡是要产生闪烁效果的地方加上 class="blink" 比较好
很奇怪楼主怎么发出来的....f l a s h i t ..提交的时候提示我不允许包含 s h i t 这个词

相关推荐

Global site tag (gtag.js) - Google Analytics