Category Archives: CSS && JS && HTML

js创建随机密码

需要在系统的的input中,利用js产生一个随机6位密码。为了方便记忆,其中只有大写字面和数字。

function randomPassword()
{
    var seed = new Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z',
                         '2','3','4','5','6','7','8','9'
                         );//数组
    seedlength = seed.length;//数组长度
    var createPassword = '';
    for (i=0;i<6;i++) {
        j = Math.floor(Math.random()*seedlength);
        createPassword += seed[j];
    }
    return createPassword;
}
alert(randomPassword());

其中,大写字面“O”和数字“0”容易搞错,不用;大写字母“I”和数字“1”类似,不用。

JQuery修改表格属性

手头上有一个封闭源代码的web软件(我无法修改源代码),其中有一个报表是是生成所有用户的List,包括姓名、邮箱、购买数量等。在生成的List中每个用户有一个checkbox用来选择用户,可以选择多个后执行操作。

我打算在生成的List中对那些没有购买过产品(也就是services)数量为0的用户发送促销邮件,就需要手工在List中一个一个的找到services为0的用户,然后点击前面的checkbox。这样不仅效率低而且容易出错。如果自动在services为0的用户前面点击的话就会很方便,不过这套web系统是闭源的,所以我无法修改源代码;不过可以通过Jquery的来自动逐行迭代table,发现如果services这一列的数值是0的话,自动把前面的checkbox设定为checked。

$(document).ready(function(){
	$("table.datatable tr td:nth-child(7)").each(
		function()
                        {
				var serviceInt = $(this).text()
				if(serviceInt == 0){
					 $(this).parent().find(':checkbox').attr('checked', true);
				}
                        }
	)
  });


1. 截取所需列

$("table.datatable tr td:nth-child(7)").each()

截取到class为datatable的表,循环的取每行第7个td的值。(由此看到了Jquery选择器的强大之处)

2. 判断

var serviceInt = $(this).text()
    if(serviceInt == 0)

判断这个td中的值是否为0

3. 执行
如果改行第七个td的值为0的话,则执行将改行(tr)中找到的checkbox赋值为checked。

$(this).parent().find(':checkbox').attr('checked', true);

其中parent()、find()等函数用起来的确很方便。

HTML常用颜色表

在HTML里,颜色有两种表示方式。一种是用颜色名称表示,比如blue表示蓝色。另外一种是用16进制的数值表示RGB的颜色值。RGB是Red,Green,Blue意思,RGB每个原色的最小值是0,最大值是255,如果换算成16进制表示,就是(#00),(#FF)。比如白色的RGB(255,255,255),就用#FFFFFF表示;还有黑色的RGB(0,0,0),就用#000000表示。

注:在W3C制定的HTML 4.0标准中,只有16种颜色可以用颜色名称表示(aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow),其它的颜色都要用16进制RGB颜色值表示。

当然,现在的浏览器支持更多的颜色名称。不过为保险起见,建议你还是采用16进制RGB颜色值来表示颜色。并且在值前加上#这个符号。

为了方便大家找到合适的颜色,我们在这里列了一些颜色说明,以供大家参考,不妨作为一种速查工具。

Web安全颜色

以前,很多电脑显示器最多支持256色,因此出现了216种Web安全颜色,以保证网页的颜色能够正确显示。

那为什么不是256种Web安全颜色呢?因为Microsoft和Mac操作系统有40种不同的系统保留颜色。

以下就是216种Web安全颜色:

#000000 #000033 #000066 #000099 #0000CC #0000FF
#003300 #003333 #003366 #003399 #0033CC #0033FF
#006600 #006633 #006666 #006699 #0066CC #0066FF
#009900 #009933 #009966 #009999 #0099CC #0099FF
#00CC00 #00CC33 #00CC66 #00CC99 #00CCCC #00CCFF
#00FF00 #00FF33 #00FF66 #00FF99 #00FFCC #00FFFF
#330000 #330033 #330066 #330099 #3300CC #3300FF
#333300 #333333 #333366 #333399 #3333CC #3333FF
#336600 #336633 #336666 #336699 #3366CC #3366FF
#339900 #339933 #339966 #339999 #3399CC #3399FF
#33CC00 #33CC33 #33CC66 #33CC99 #33CCCC #33CCFF
#33FF00 #33FF33 #33FF66 #33FF99 #33FFCC #33FFFF
#660000 #660033 #660066 #660099 #6600CC #6600FF
#663300 #663333 #663366 #663399 #6633CC #6633FF
#666600 #666633 #666666 #666699 #6666CC #6666FF
#669900 #669933 #669966 #669999 #6699CC #6699FF
#66CC00 #66CC33 #66CC66 #66CC99 #66CCCC #66CCFF
#66FF00 #66FF33 #66FF66 #66FF99 #66FFCC #66FFFF
#990000 #990033 #990066 #990099 #9900CC #9900FF
#993300 #993333 #993366 #993399 #9933CC #9933FF
#996600 #996633 #996666 #996699 #9966CC #9966FF
#999900 #999933 #999966 #999999 #9999CC #9999FF
#99CC00 #99CC33 #99CC66 #99CC99 #99CCCC #99CCFF
#99FF00 #99FF33 #99FF66 #99FF99 #99FFCC #99FFFF
#CC0000 #CC0033 #CC0066 #CC0099 #CC00CC #CC00FF
#CC3300 #CC3333 #CC3366 #CC3399 #CC33CC #CC33FF
#CC6600 #CC6633 #CC6666 #CC6699 #CC66CC #CC66FF
#CC9900 #CC9933 #CC9966 #CC9999 #CC99CC #CC99FF
#CCCC00 #CCCC33 #CCCC66 #CCCC99 #CCCCCC #CCCCFF
#CCFF00 #CCFF33 #CCFF66 #CCFF99 #CCFFCC #CCFFFF
#FF0000 #FF0033 #FF0066 #FF0099 #FF00CC #FF00FF
#FF3300 #FF3333 #FF3366 #FF3399 #FF33CC #FF33FF
#FF6600 #FF6633 #FF6666 #FF6699 #FF66CC #FF66FF
#FF9900 #FF9933 #FF9966 #FF9999 #FF99CC #FF99FF
#FFCC00 #FFCC33 #FFCC66 #FFCC99 #FFCCCC #FFCCFF
#FFFF00 #FFFF33 #FFFF66 #FFFF99 #FFFFCC #FFFFFF

微软支持的颜色名称

下面是微软IE4.0以上都支持的颜色名称:

aliceblue
(#F0F8FF)
antiquewhite
(#FAEBD7)
aqua
(#00FFFF)
aquamarine
(#7FFFD4)
azure
(#F0FFFF)
beige
(#F5F5DC)
bisque
(#FFE4C4)
black
(#000000)
blanchedalmond
(#FFEBCD)
blue
(#0000FF)
blueviolet
(#8A2BE2)
brown
(#A52A2A)
burlywood
(#DEB887)
cadetblue
(#5F9EA0)
chartreuse
(#7FFF00)
chocolate
(#D2691E)
coral
(#FF7F50)
cornflowerblue
(#6495ED)
cornsilk
(#FFF8DC)
crimson
(#DC143C)
cyan
(#00FFFF)
darkblue
(#00008B)
darkcyan
(#008B8B)
darkgoldenrod
(#B8860B)
darkgray
(#A9A9A9)
darkgreen
(#006400)
darkkhaki
(#BDB76B)
darkmagenta
(#8B008B)
darkolivegreen
(#556B2F)
darkorange
(#FF8C00)
darkorchid
(#9932CC)
darkred
(#8B0000)
darksalmon
(#E9967A)
darkseagreen
(#8FBC8B)
darkslateblue
(#483D8B)
darkslategray
(#2F4F4F)
darkturquoise
(#00CED1)
darkviolet
(#9400D3)
deeppink
(#FF1493)
deepskyblue
(#00BFFF)
dimgray
(#696969)
dodgerblue
(#1E90FF)
firebrick
(#B22222)
floralwhite
(#FFFAF0)
forestgreen
(#228B22)
fuchsia
(#FF00FF)
gainsboro
(#DCDCDC)
ghostwhite
(#F8F8FF)
gold
(#FFD700)
goldenrod
(#DAA520)
gray
(#808080)
green
(#008000)
greenyellow
(#ADFF2F)
honeydew
(#F0FFF0)
hotpink
(#FF69B4)
indianred
(#CD5C5C)
indigo
(#4B0082)
ivory
(#FFFFF0)
khaki
(#F0E68C)
lavender
(#E6E6FA)
lavenderblush
(#FFF0F5)
lawngreen
(#7CFC00)
lemonchiffon
(#FFFACD)
lightblue
(#ADD8E6)
lightcoral
(#F08080)
lightcyan
(#E0FFFF)
lightgoldenrodyellow
(#FAFAD2)
lightgreen
(#90EE90)
lightgrey
(#D3D3D3)
lightpink
(#FFB6C1)
lightsalmon
(#FFA07A)
lightseagreen
(#20B2AA)
lightskyblue
(#87CEFA)
lightslategray
(#778899)
lightsteelblue
(#B0C4DE)
lightyellow
(#FFFFE0)
lime
(#00FF00)
limegreen
(#32CD32)
linen
(#FAF0E6)
magenta
(#FF00FF)
maroon
(#800000)
mediumaquamarine
(#66CDAA)
mediumblue
(#0000CD)
mediumorchid
(#BA55D3)
mediumpurple
(#9370DB)
mediumseagreen
(#3CB371)
mediumslateblue
(#7B68EE)
mediumspringgreen
(#00FA9A)
mediumturquoise
(#48D1CC)
mediumvioletred
(#C71585)
midnightblue
(#191970)
mintcream
(#F5FFFA)
mistyrose
(#FFE4E1)
moccasin
(#FFE4B5)
navajowhite
(#FFDEAD)
navy
(#000080)
oldlace
(#FDF5E6)
olive
(#808000)
olivedrab
(#6B8E23)
orange
(#FFA500)
orangered
(#FF4500)
orchid
(#DA70D6)
palegoldenrod
(#EEE8AA)
palegreen
(#98FB98)
paleturquoise
(#AFEEEE)
palevioletred
(#DB7093)
papayawhip
(#FFEFD5)
peachpuff
(#FFDAB9)
peru
(#CD853F)
pink
(#FFC0CB)
plum
(#DDA0DD)
powderblue
(#B0E0E6)
purple
(#800080)
red
(#FF0000)
rosybrown
(#BC8F8F)
royalblue
(#4169E1)
saddlebrown
(#8B4513)
salmon
(#FA8072)
sandybrown
(#F4A460)
seagreen
(#2E8B57)
seashell
(#FFF5EE)
sienna
(#A0522D)
silver
(#C0C0C0)
skyblue
(#87CEEB)
slateblue
(#6A5ACD)
slategray
(#708090)
snow
(#FFFAFA)
springgreen
(#00FF7F)
steelblue
(#4682B4)
tan
(#D2B48C)
teal
(#008080)
thistle
(#D8BFD8)
tomato
(#FF6347)
turquoise
(#40E0D0)
violet
(#EE82EE)
wheat
(#F5DEB3)
white
(#FFFFFF)
whitesmoke
(#F5F5F5)
yellow
(#FFFF00)
yellowgreen
(#9ACD32)

 

利用JQuery制作单行滚动的代码

不用安装其他的JQery插件,简单的利用animate动画就能实现这个效果:

<!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>单行滚动</title>
<script type="text/javascript" src="jquery.js"></script>
<link type="text/css" rel="stylesheet" href="common.css" />
<style>
#scrollDiv {
width:300px;
height:25px;
border:#ccc 1px solid;
overflow:hidden
}

#scrollDiv ul{
float: left;
border: 0 none;
margin: 0;
}
#scrollDiv li {
height:25px;
line-height: 25px;
padding-left:10px;
}
</style>
<script type="text/javascript">
function AutoScroll(obj){
$(obj).find("ul:first").animate({
marginTop:"-25px"
},500,function(){
$(this).css({marginTop:"0px"}).find("li:first").appendTo(this);
});
}
$(document).ready(function(){
setInterval('AutoScroll("#scrollDiv")',3000)
});
</script>
</head>
<body>
<div id="scrollDiv">
<ul>
<li>这是公告标题的第一行</li>
<li>这是公告标题的第二行</li>
<li>这是公告标题的第三行</li>
<li>这是公告标题的第四行</li>
<li>这是公告标题的第五行</li>
<li>这是公告标题的第六行</li>
<li>这是公告标题的第七行</li>
<li>这是公告标题的第八行</li>
</ul>
</div>
</body>
</html>

单行滚动

欢迎Alice开源

Alice是支付宝团队把自己的一些UI开源的结果,项目很不错,值得那些需要从开始创建的网站来参考。Alice不仅提供了很多UI的基础构建,更提供了很多编辑器的插件(天哪,甚至提供了Coda的插件,难道支付宝的团队也用Coda吗?)

 

CSS定义的次序和优先权问题

这是下午在优化一个页面的时候的截图,wordpress原来已经把ul,ol,li的list-styel设置为none了,li不会在开头出现小黑疙瘩了,但是我想让某一部分li前面出现黑色的提示符:

我设置的css定义为.help ul.ol.li{list-style:squar},这样详细指明的css定义竟然没有通用的ul,ol,li{list-style:none}的优先权大?!

后来把.help ul.ol.li{list-style:squar}该为.help li{list-style:squar}才得到我想要的结果,why?

新的代码高亮插件

原来用的Google Syntax Highlighter for WordPress代码高亮插件在切换编辑器的时候经常导致<pre>标签丢失,很不好用。后来用了SyntaxHighlighter Evolved就比较方便,SyntaxHighlighter Evolved用的是[]作为标签,不到导致在Visual editer中切换的时候破坏标签了。

在HTML editer中手工添加标签也很麻烦,没有默认的按钮能够添加,不过可以手工制作按钮。修改修改/wp-includes/js/quicktags.js文件,找到

edButtons[edButtons.length]=new edButton("ed_code","code","<code>","</code>","c");

在其后添加

edButtons[edButtons.length]=new edButton("ed_shle","1","1","【code】","c");

就能添加一个php标签的按钮,依法炮制就能制作其code的按钮了。

javascript里的条件判断

JavaScript 是一种可以在浏览器中运行的脚本语言,是一种弱语言(相对于C,C#,JAVA而言),只要是计算机语言就会使用到条件判断式,而JavaScript作为一种“弱”语言,它的条件判断常常令人困惑不解,特别是有其它强语言编程经历的人来说,更是不可理喻!高手和无惑的人别取笑,我自己也曾经有一段时间郁闷过。先写一个例子吧:

var s = “meizz”;
if (s && s==true)
{
alert(“Is true”);
}

咱先不管上面的代码运行的结果正确与否,我给变量 s 赋的是字符型,而在后面的 if 条件判断式里是直接把变量 s 作为一个判断表达式写出的,若是在强语言里对字符型的变量要么是判断它的类型是否是字符型或者是判断这个变量的值是否等于某字符串,但在 javascript 里就是没有用类型判断(typeof)也没有值判断(==)而就是这么孤伶伶地在那里,就可以作为一个条件判断表达式。当然这种单独作为条件表达式不只是字符型变量,也可以是数字型变量,也可以是一个对象,也可以是一个函数或者方法等等。这就正是这种语法令人费解的地方。

我测试统计了一下:在 JavaScript 里,不为空 “” 的字符串、不为 0 的数字、不为 null 的对象、不为 undefined 的对象属性、布尔型 true,单独作为判断式里的一个表达式时 JavaScript 通通认定为真(true),反之则为假(false)

原因为是JS脚本没有强变量类型,你前一句赋值 var s = “meizz”; 后一句你甚至马上可以写成 s = function(){}; ,中间没有任何的类型转换,而这些写法在强语言里是不可思议的,甚至是大逆不道的(根本就不支持这种语法),但在JS脚本里却是那么的自然。原因就是没有强制变量类型, 变量类型是动态的,也就是说变量本身是没有类型的,变量的值是有类型的。呵呵,这里扯到其它模块去了,嗯,关于变量类型我另外再写文章讨论吧。

说到这里,就不难理解 if (s && …..这句的判断式了,同样的道理,我甚至可以 function s(){} 然后再用 if (s && …. 或者 var s = document.getElementById(“ObjectId”);  if (s && …. 这样语法在JS脚本里都是没错的,至于判断的结果可以参考上面的那段统计结果。

现在再来讨论上面的那几句代码的运行结果,多个条件判断式的结果合成运行只有“与”和“或”,到于“非”因为它是一元运行符,只针对单个值,比如 if (!s) … 至于条件式不只一个的时候条件式的结果只有与和或的运行。与(&&),或(||)。上面的那句条件式:if (s && s==true) 就是两个条件式的合成判断。至于与运算(只要一个值为false则值为false)或运算(只要一个值为true则值为true)这些运算细节我就不多说了,教科书比我的笔头强多了。现在来分析这个判断式:这是一个“与”运算。第一个判断式 s ,因为它的字符型值不为 “” ,在JS当然认为它等同于 true,第二个判断式是 s==true,显然这个不相等,值为 false,因为是“与”运算,当然整个条件判断式的结果是 false,所以不会运行 alert()。

第三,我这里说说几个很特殊的条件判断。在没有任何声明(var)和赋值的情况下,直接拿一个变量来判断JS会抛出一个变量未定义的错误出来。比如:

if (ss) alert(“条件判断结果为 true!”);

运行这句代码就会出错。因为这个变量 ss 从未被声明赋值过,这种情况不等同于上述的 null “” undefined。这种情况一般会发生在什么地方呢?一是自己写代码不小心未声明,二就是对网页里没有的控件进行操作直接用ID来操作的时候,比如 if (InputId.value!=””) … ,若是网页里根本就没有 id=”InputId” 的文本框或者在执行这句脚本操作的时候这个文本框还没有被浏览器加载,那也就抛出变量未定义的错误。

结果的办法是:第一种情况用 typeof 判断。if (typeof(ss)==”undefined”) alert(“变量未定义”);  ,第二种情况则不要直接使用ID来引用对象而使用标准的对象引用。例:

var e = document.getElementById(“InputId”);  //IE里以前是用 document.all.InputId
if (e && e.value!=””) ;//……

这样就不会出这种错误了。

那么就上面这句代码有人会说一定要这样写呢,为什么不直接

if(document.getElementById(“InputId”).value != “”) ;//….

这样的代码不是更精练吗?城然代码是精简了,但错误也来了。只要网页里没有这个对象或者这个对象在脚本执行的时候还未被加载到,就会报错。原来是 document.getElementById(“InputId”) 返回了 null 值,而 null 显然是没有 value 属性的,而我那句代码也用到了 e.value 来取属性但就没有报错,原因在于C系列的语言在多个条件式里的另一外属性:多个条件判断式组合判断时,先看第一个条件式,若已经符合条件时,就不会再去判断第二个判断式;也就是在第一个条件判断式未达到标准时再会去判断第二个判断式,依此类推直至最后。if (e && e.value!=””) 是两个判断式的组合判断,这是一个“与”运算,只要一个判断式为 false 则整个值都为 false。第一个判断式 e 由于不存在或者未加载到返回了 null,而在JS里 null 就等同于 false ,这样不用后面的判断也可得到整个组合判断的结果是 false 了,所以系统就不会再去判断后面的那句 e.value 了。这点与B系列语言不同,尤其要注意。在B语言中 if e and e.value!=”” then 这样的语句是先把所有的判断式都运算一遍后最后再做组合的“与”运算。所以这句代码在JS里是正确的,若放在VBS里就不一定正确了。

查看本文来源