名震中外的输入框
闪烁的东西往往会吸引别人的注意。你可以用它来强调一些比较重要的内容。文本框也可以做到。
将如下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">
换成.凡是要产生闪烁效果的地方加上 class="blink" 比较好
很奇怪楼主怎么发出来的....f l a s h i t ..提交的时候提示我不允许包含 s h i t 这个词
这个是ie特有的,不是标准写法,在标准浏览器中是有问题的,可以写成document.getElementById.
另外楼上建议的对,id换成class更好,id不太合适
在线效果可看 hy2999.com 首页右上角搜索输入框
通过id直接操作style,应该也很正常吧,
注:那个站的整体网页不好看,不要批我
(刚玩PHP一天,直接改代码从原PHP连接2000至sqlserver 2005的,也包括配置php,不像java那样直接改class.forName就可以了,还要改很多mssql至sqlserver2005函数名及rewrite的配置,达到从PHP到HTML的静态效果)
<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>
<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>
其實這個功能使用裝了 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>
我对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 这样可以了吧,同样的效果,节省你一个插件
我对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貌似走上了为用而用的歧途了
轻量级的应用非得上大炮,何苦呢
<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>
<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>
减少不必要的变量使用,虽然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>
减少不必要的变量使用,虽然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; 这个三目运算真是丑晕了. !!没用过吗?
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个节点进去.
你测的代码是用我最开始想到的,不过你把var o = document.getElementById("f"); 也放到循环里面当然时间要长很多很多了。。。
对于你的代码,500ms可能不是一个很短的时间,如果换成了1ms的话你的自增总会有增到数字最大值的时候...?这个你能保证不发生么?
o.style.color=o.style.color=="red"?"black":"red";
这个方法算是完全利用代码本身的属性了
第一页的代码只是随手一写,完全没有考虑,所以我才有后面不断修改的精简版
最后,我的JS只算是初级自学,完全是兴趣使然,拿出来只是为了大家分享一下而已,毕竟我有自己的工作,又不是JS方面的,研究时间长了用处也不大...
LS的代码也拿走学习,会不会有溢出的危险那只能先当做问号处理了,不过如果非要用判断的话我依旧推崇用true false代替你的自增,代码的稳定和安全永远放到第一位!效率么... 我相信你把 getElements放到外面10000的数据量不会差太多的
应该够用了吧