在JavaScript中,整型值在与字符串值进行相加操作时,会把整型值自动转换成字符串值然后进行拼接操作。可以通过parseInt()函数将字符串转为整型之后再进行相加操作,可以避免这种情况的发生。
/**
*考评项录入框失去焦点后,计算当前得分
*/
function sumScore(){
var inputs = document.getElementsByTagName('input');
var objTotalScore = document.getElementById("totalScore");
var totalScore = 0;
for(var i = 0; i < inputs.length; i++){
if(inputs[i].name == 'score'){
totalScore += parseInt(inputs[i].value);
}
}
objTotalScore.value = totalScore;
}
关于parseInt():
parseInt()函数是JavaScript的全局函数,可直接引用。其作用为解析一个字符串,并返回一个整数。
假设textId为文本框的ID,那么可以通过如下代码设置其颜色:
textId.style.backgroundColor = #FFEECC;
注意是backgroundColor而不是backgroundcolor,区分大小写。
参考:
http://www2.flash8.net/teach/4034.htm
to_number()
该函数将一个字符串转化为数字。
语法为:
to_number( string1, [ format_mask ], [ nls_language ] )
参数说明:
string1 is the string that will be converted to a number.
format_mask is optional. This is the format that will be used to convert string1 to a number.
nls_language is optional. This is the nls language used to convert string1 to a number.
示例:
to_number(‘1210.73’, ‘9999.99’) would return the number 1210.73
to_number(‘546’, ‘999’) would return the number 546
to_number(’23’, ’99’) would return the number 23
Since the format_mask and nls_language parameters are optional, you can simply convert a text string to a numeric value as follows:
to_number(‘1210.73”) would return the number 1210.73
trunc(for number)
TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
其具体的语法格式如下
TRUNC(number[,decimals])
其中:
number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分
下面是该函数的使用情况:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
ceil()
取大于等于数值n的最小整数
语法为:
ceil( number )
示例:
ceil(32.65) would return 33.
ceil(32) would return 32.
ceil(-32.65) would return -32.
ceil(-32) would return -32.
floor()
取小于等于数值n的最大整数
语法:
floor( number )
示例:
floor(5.9) would return 5
floor(34.29) would return 34
floor(-5.9) would return -6
round()
传回一个数值,该数值是按照指定的小数字元数进行四舍五入运算的结果。
语法:
round( number, [ decimal_places ] )
参数说明:
decimal_places is the number of decimal places rounded to. This value must be an integer. If this parameter is omitted, the round function will round the number to 0 decimal places.
示例:
round(125.315) would return 125
round(125.315, 0) would return 125
round(125.315, 1) would return 125.3
round(125.315, 2) would return 125.32
round(125.315, 3) would return 125.315
round(-125.315, 2) would return -125.32
索引就好象一本字典的目录。凭借字典的目录,我们可以非常迅速的找到我们所需要的条目。数据库也是如此。凭借Oracle数据库的索引,相关语句可以迅速的定位记录的位置,而不必去定位整个表。
虽然说,在表中是否创建索引,不会影响到Oracle数据库的使用,也不会影响数据库语句的使用。这就好像即使字典没有目录的话,用户仍然可以使用它一样。可是,若字典没有目录,那么可想而知,用户要查某个条目的话,其不得不翻遍整本字典。数据库也是如此。若没有建立相关索引的话,则数据库在查询记录的时候,不得不去查询整个表。当表中的记录比较多的时候,其查询效率就会很低。所以,合适的索引,是提高数据库运行效率的一个很好的工具。
不过,并不是说表上的索引越多越好。过之而不及。故在数据库设计过程中,还是需要为表选择一些合适的索引。宁缺勿滥,这是建立索引时的一个遵循标准。在理论上,虽然一个表可以设置无限的索引。但是,数据库管理员需要知道,表中的索引越多,维护索引所需要的开销也就越大。每当数据表中记录有增加、删除、更新变化的时候,数据库系统都需要对所有索引进行更新。故数据库表中的索引绝对不是多多益善。具体来说,在索引建立上,笔者对大家有如下建议。
建议一:在基数小的字段上要善于使用位图索引。
基数是位图索引中的一个基本的定义,它是指数据库表中某个字段内容中不重复的数值。如在员工信息表中的性别字段,一般就只有男跟女两个值,所以,其基数为2;婚姻状况字段的话,则其只有已婚、未婚、离婚三种状态,其基数就为3;民族一览内也是只有有限的几个值。
对于要查询基数小的字段,如现在用户想查找所有婚姻状况为“已婚”的“女性”时,利用位图索引可以提高查询的效率。这主要是因为标准索引是通过在索引中保存排序过的索引列以及对应的ROWID来实现的。若我们在基数小的列上建立标准索引的话,则其会返回大量的记录。
而当我们在创建位图索引的时候,在Oracle会对整个表进行扫描,并且会为索引列的每个取值建立一个位图。若内容相同,则在位图上会以一个相同的数字表示。此时,若这个字段的基数比较小的话,则若需要实现对整个字段的查询的话,效率就会非常的高。因为此时,数据库只要位图中数字相同的内容找出来即可。
除了在数据表某列基数比较小的情况下,采用位图索引外,我们往往在一些特殊的情况下,也会建议采用位图索引。最常见的情况是,在Where限制条件中,若我们多次采用AND或者OR条件时,也建议采用位图索引。因为当一个查询饮用了一些部署了位图索引的列的时候,这些位图可以很方便的与AND或者Or 运算符操作结合以快速的找出用户所需要的记录。
但是,这里要注意,不是在条件语句中包含运算符的时候,采用位图索引都能够提供比较高的效率。一般来说,只有AND 或者OR运算符的时候,位图索引才会比较具有优势。若此时用户采用大于号或者不等于号作为条件语句中的限制条件的时候,则往往采用标准索引具有更大的优势。
所以,笔者在数据库设置中,一般只有在三种情况下才采用位图索引。一是列的基数比较小,而有可能需要根据这些字段的内容查找相关的记录;二是在条件语句中,用到了AND或者OR运算符的时候。除了这两种情况外,最好能够采用其他适合的索引。第三种情况是,需要用到NULL作为查询的限制条件。因为标准查询一般情况下,会忽略所有的NULL值列。也就是说,若需要查询“所有没有身份证号码”的员工的信息的时候,标准索引并不能够起到加速查询速度的作用。此时,就需要采用位图索引。因为位图索引会记录相关的NULL值列信息。
建议二:创建索引的一些限制条件。
并不说,表或者列建立的索引越多越好。相反,索引建的越多,有时会反而会影响数据库运行的整体性能。所以,在建立索引的时候,仍然会有一些限制条件。
一是不要对一些记录内容比较少的表建立索引。在一个应用系统设计的时候,如设计一个ERP系统的数据库,其虽然有几千张表。但是,并不是每张表都有大量记录的。相反,其中有近一半左右的数据表,可能其存储的数据不会超过百条。如员工登陆帐户密码表、企业部门信息表等等。对于这些记录内容比较少的表,我们建立最好不要为其建立索引。无论是表上的,还是字段上,都不要建立索引。
二是若表中的内容比较大,但是,这个表基本上不怎么查询的时候,则只需要在表上建立索引即可;而不需要在字段上建立索引。如现在在ERP系统中,有一张表是“AD_Table”。其存储的是这个数据库中相关表的信息。这张表只有在数据库设计的时候才会用到。故这张表中的记录虽然比较多,但是由于用户用的比较少,所以,一般没有必要为这张表建立列级别上的索引。而直接用表索引来代替。
三是在一些NULL字段上,要根据实际情况来判断是否要建立索引。如现在有一张人事档案的表格,其上面有两个字段,分别为“身份证号码”与“地区”。有时会为了某个原因,企业需要所有员工都在系统中登记他们的身份证号码,以方便他们办工资卡、社会保险等等。所以人事管理可能需要经常的查询系统,看看有没有没有身份证号码的员工信息。此时,就需要利用条件“IS NULL”来查询我们所需要的记录。故为了提高查询效率,若某个记录可能为空,并且经常需要以NULL为条件进行查询的时候,则最好给这个字段添加一个索引,并且最好建立位图索引。相反,若虽然可能会以NULL这个条件作为查询的限制语句,但是,用的不是很多的时候,则就没有必要为其建立索引。
建议三:多表连接查询的索引设计。
如现在有一个人事管理系统。人事经理想知道员工的社保缴纳情况。他需要知道员工的姓名、职务、户籍性质(农民户口跟居民户口费用不一样)、缴纳的情况等等。但是,这些信息包含在不同的表中。因为为了提高数据库的性能,在表中存储的可能只是某些序号,而不是具体的内容。如在社保表中,存储的是员工对应的编号,而不是员工的名字。所以,要得到这份报表的话,就可能需要关联员工基本信息表、公司组织结构表等表格,才能够查询到用户所需要的内容。
为此,就需要利用Join语句,把这些表格关联起来。为了提高数据库的查询效率,这些用来关联的字段,最好能够建立索引。这可以显著的提高查询的速度。
建议四:在表的更新速度与查询速度之间寻求一个平衡点。
众所周知,索引本身并不影响数据库的使用,其主要是为了提高数据库的查询效率。但是,由于当数据库的表中的数据更新的时候,包括记录的增加、删除、更改等等,都会对虽有的索引进行更新。
很明显,索引虽然可以提高查询速度。但是,也会对一些表的更新操作产生不良的影响。当在表中建立的索引越多,这个不利影响也会越大。故数据库管理员在设置索引的时候,还需要注意,在这两个之间需要一个均衡点。
按照一般的理论来说,当某个表多数用来查询、更新相对来说比较上的话,则要多多采用索引。相反,当某个表记录更新居主导,查询相对来说比较少的话,则不要建立太多的索引,避免对更新的速度差生不利影响。
在实际工作中,若某个表频繁的被视图所调用的话,则最好就好设置比较多的索引了。
参考:
http://www.crazycoder.cn/DataBase/Article22055.html
同级框架集间的引用
window.parent.frames[“frameName”]
window.parent.frames[frameIndex]
说明:
1:一种是通过frame的名字进行引用,一种是通过索引值进行引用。
2:window.frames[“frameName”]和window.frames[frameIndex]一般用于引用iframe。
改变框架的载入页面
window.frames[“frameName”].location=”XXX.html”;
说明:
通过设置location属性,也可以实现从一帧刷新另一帧的效果。
引用框架页面内的对象
因为框架(frame)都对应一个html页面,所以这个框架也是一个独立的浏览器窗口,它具有窗口的所有性质。所谓对框架的引用也就是对window对象的引用。有了这个window对象,就可以很方便地对其中的页面进行操作,例如使用window.document对象向页面写入数据、使用window.location属性来改变框架内的页面等。
举例:
1:name为leftFrame的框架引用页面a.html中有一个test()的js方法,那么同级的框架页面中可以通过window.parent.frames[‘leftFrame’].test()调用到该函数。
2:window.frames[‘frameName’].document.getElementById(‘elementId’);
其他问题
firefox兼容的代码:window.parent.window.frames[‘frameName’];
说明:
frames 集合并不是挂在 document 而是挂在window对象下.
size
属性size用来设置选择域的高度,默认为1。
multiple
属性multiple用来设置是否可以多选,拖动鼠标即可多选,或者使用ctrl键、shift键。
disabled
属性disabled用来设置选择框是否可用。
另外通过style=”width:300px”可以设置选择域的宽度,类似的也可以设置其他的属性。
Oracle用Start with…Connect By子句递归查询
Start with…Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);
插入测试数据:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(‘1′,’10’,’0′);
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(‘2′,’11’,’1′);
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(‘3′,’20’,’0′);
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(‘4′,’12’,’1′);
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(‘5′,’121′,’2’);
从Root往树末梢递归
select * from TBL_TEST
start with id=1
connect by prior id = pid
从末梢往树ROOT递归
select * from TBL_TEST
start with id=5
connect by prior pid = id
参考:
http://blog.csdn.net/Caesar_Gu/archive/2008/01/21/2055985.aspx
http://oracle.chinaitlab.com/exploiture/734006.html
http://blog.sina.com.cn/s/blog_4bfad52101000b93.html
http://hi.baidu.com/suofang/blog/item/a58bdd5829d5e583800a1812.html
http://www.builder.com.cn/2007/1005/536404.shtml
http://deqiallen.javaeye.com/blog/92794
碰到了如下的情况:只能局部滚动而不能全屏滚动,同时又不想用iframe。于是想到了固定一个div的行高,仅仅强制div内的内容滚动。参考代码如下:
<div style="height:220px;width:100%;overflow:auto;">
....some other thing....
<div>
效果如下:
| aaa |
| aaa |
| aaa |
| aaa |
| aaa |
overflow 标签的说明
overflow : visible | auto | hidden | scroll
参数:
visible : 不剪切内容也不添加滚动条。假如显式声明此默认值,对象将被剪切为包含对象的window或frame的大小。并且clip属性设置将失效
auto : 此为body对象和textarea的默认值。在需要时剪切内容并添加滚动条
hidden : 不显示超过对象尺寸的内容
scroll : 总是显示滚动条
Oracle格式化数字的方法
2008-07-16 10:50
to_char,函数功能,就是将数值型或者日期型转化为字符型。
比如最简单的应用:
/*1.0123—>’1.0123’*/
Select TO_CHAR(1.0123) FROM DUAL
/*123—>’123’*/
Select TO_CHAR(123) FROM DUAL
接下来再看看下面:
/*0.123 —> ‘.123’ */
SELEC TO_CHAR(0.123) FROM DUAL
上面的结果 ‘.123’ 在大多数情况下都不是我们想要的结果,我们想要的应该是 ‘0.123’。
我们来看一下to_char函数的具体用法:
TO_CHAR ( n [, fmt [, ‘nlsparam’]] )该函数将NUMBER类型的n按数值格式fmt转换成VARCHAR2类型的值。’nlsparams’指定由数值格式的元素返回的字符,包括:
.小数点字符
.组分隔符
.本地钱币符号
.国际钱币符号
变元的形式为:
‘NLS_NUMERIC_CHARACTERS=”dg” NLS_CURRENCY=”tcxt” NLS_ISO_CURRENCY=territory’
其中d为小数点字符,g为组分隔符。
例 :TO_CHAR (17145,’L099G999′,’NLS_NUMERIC_CHARACTERS=”.,” NLS_CURRENCY=”NUD”‘)=NUD017,145
通过上面的了解,再查看fmt的一些格式,我们可以用以下表达式得到’0.123’的值:
/*0.123 —> ‘ 0.123′ */
Select TO_CHAR(0.123,’0.999’) FROM DUAL
/*100.12 —> ‘######’ */
Select TO_CHAR(100.12,’0.999′) FROM DUAL
/*1.12 —> ‘ 1.120′ */
Select TO_CHAR(1.12,’0.999’) FROM DUAL
‘ 0.123’是出来了,可是前面又多了一个空格。
对于 100.12 的值却是######,以及’1.12’的值变成了 ‘1.120’。
我们重新确定一个新的需求:
1、去空格
2、小数点最多4位,最少保留2位。
1—>’1.00’;1.1—>’1.00’;1.12–>’1.12’;1.1234—>’1.1234’;
1.12345—>’1.1235′
最终实现如下:
/*
FM :除空格
9999999.0099:允许小数点左边最大正数为7位,小数点右边最少2位,最多4位,且在第5位进行四舍五入
*/
Select TO_CHAR(123.0233,’FM9999999.0099′) FROM DUAL
from:http://blog.csdn.net/feiyu1001/archive/2008/10/23/3129836.aspx