您的位置:首页 > Web前端 > JQuery

工作笔记总结——前台js—jQuery—HTML

2013-05-13 13:30 519 查看
1、js精确计算两个浮点数加法

思路:将乘数和被乘数乘以小数点较大的10的幂指数方,将浮点数转换为整数,然后相加后除以幂指数方即可转化为小数

例子:

<html>
<head>

<script type="text/javascript">
function test() {
FloatAdd(12.1112,0.00001100003999);
//alert();
}

//浮点数加法运算
function FloatAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
alert((arg1*m+arg2*m)/m);
//return (arg1*m+arg2*m)/m
}

</script>

</head>
<body>
<a onclick="test();" href="#">测试浮点数加法</a>
</body>
</html>


2、jQuery

1)jQuery中选择器中多个条件中间有一个空格表示前面的选择器满足后,只要它的后代节点中有满足第二个条件的即可,如果中间是”~“ 则表示必须是儿子节点。

如:$("form table")表示form下的子节点中所有的table,而$("form ~ table")表示form的儿子节点中中的table。

2)jQuery实现元素隐藏

$("#xxx").css('display', 'none');

3、js数组

var arrayObj = new Array();

arrayObj.push(obj); //将obj对象放到数组中

arrayObj.pop(); //弹出最上面的元素

属性:length、constructor、prototype

5、param获取URL中的参数,示例代码:

${param.arg1}

6、在jsp中使用EL表达式获取后台对象时,最好指定域,page、request、Session、application,示例代码:

request: ${requestScope.user.userId} // 拿request域中user对象中的userId属性

7、EL表达式中两种获取属性方式“."和”[ ]“,前者是获取bean属性或是Map,后者是获取数组或是List,也可以结合使用,示例代码:

${sessionScope.userinf[0].id } // 获取Session中第一个user的id属性,使用“[ ]”可以使用特殊字符

8、js中top.parent.frame

top:该变量永远只分割窗口最高层次的浏览器窗口,如果计划从分割窗口的最高层次开始执行命令,可以用top变量

分割窗口:frameset或iframe中

获取frame文档对象:$(window.parent.frames["frameId“].document}

9、替换HTML中标签j替换为空字符串js代码

示例代码:

s.replace("/<[^>]+>/g", "");


10、在jsp中文档头部一般使用严格的:<!DOCTYPE HTML>即可,其他的都是过渡和基于框架的,否则会导致页面中样式的显示有些奇怪的问题

11、对于使用jQuery中的replace时,将<a>标签替换原来的文字时,a标签中的标签乱了,是因为onclick=后面的需要用双引号,并且需要转义,不然会导致引号不匹配

1)单/双引号匹配问题会导致浏览器解析标签错乱

2)双引号需要转义

12、添加自定义属性到标签时,最好全部小写,否则有的浏览器解析会将属性全部转换为小写,这样就和原来我们自己定义的不一样了,导致取不到DOM对象,其二就是标签属性按照规范来的话也都是小写。

14、jQuery1.4和jQuery1.7使用上的不同

对于使用“[ ]”来去取dom对象的选择器在1.4上有时会失效,1.7比较稳定

13、对于input为reset类型的输入域,在刚进入页面时调用jQuery的click方法后,在input标签中的onclick属性就会被移除掉

14、在多个frame嵌套下可以通过top那第二层frame,以name拿,并且可以调用对应jsp页面的js方法,例如:

top.navFrame.insertTabs('1', true); //调用一级frame下以navFrame为name的frame,调用inserTabs方法;
//如果想拿到对应frame的dom对象,可以使用如下写法
$(top.navFrame.docment).find("#first"); //查找navFram中以first为id的元素;
注:也可以使用parent替换top,top指的是最外层的dom,parent指的是当前页面的上级页面,有时候可以通用








15、IE6兼容问题

1)a标签中的onclick表单submit不管用了,因为如果有href属性的话,默认行为是href后的代码,不会提交表单了,有两种解决方案:

一、不加href属性,样式中加上手型,模拟超链接:

代码如下:

<a onclick="test();" style="curse :pointer" >test</a>


二、在onclick方法后加上return false,阻止a标签的默认行为;

代码如下:

<a href="javascript:void(0);" onclick="test();return false;" >test</a>


2)HTML标签中name一般不允许更改,在IE6/IE7中不能更改,IE8可以更改,在IE7中如果对name进行赋值,将会添加submitName属性,值为想要更改name的值

,IE6我就看不到了

3)使用artDialog组件做弹出窗口时,将一个隐藏的form作为弹出窗的content,在还没有弹出该窗口时对隐藏的那个form进行标签中移除readonly属性的操作时,当需要将隐藏的form放到artDialog后,弹出来的form中依然有readonly属性,只有先将隐藏的form放到artDialog后在对form中的标签中移除readonly属性才可以成功。分析可能是IE6下无法识别别隐藏的form的原因吧,大家怎么看

16、resize多次被调用问题

在页面上点击或blur也会触发resize事件,而且不止调用一次,可以采用wresize插件解决,也可以通过设置一定的延时

17、在js中调用setTimeout方法时,由于异步的原因,最好调用setTimeout的方法后面不要有其他代码,或者是一些不会影响到setTimeout方法中调用的函数的执行,否则会导致两者同时执行时被延时的方法还没执行完,下面的代码却需要上面的结果,这样会导致页面报错,在setTimeout中函数以方法名出线,不要加括号。

18、页面表单中的输入域最好都加上英文的非法字符(包括英文表单符号),否则如果添加记录时输入java脚本后其中的内容将无法显示,但是已经存到了数据库,如“<%=test%>”,在页面列表中无法看到该内容,只有空白。

19、使用iframe或者frameset框架时不要让其滚动,不然点击出现的滚动条会jQuery报错:nodeName不是对象的错误,设置scrolling=“no",frameborder=“0”是设置边框的,默认是那种很丑的边框,一般去掉,想要加滚动条可以再frame内部的页面加滚动条。

20、使用iframe或者frameset框架时获取顶部窗口对象使用top,parent只是获取上层窗口; 计算某个元素的宽度或高度是,采用整个窗口的宽度或高度,如$(window).height();

21、使用el表达式时,对于不等使用nq,不是neq,相等是eq,对于list是否为空时,采用${empty request.result}

22、实现省略“...”需要设置style中text-overflow 和 overflow:hidden; width: 100px;

23、ie8下div下的input个数为一个时input会往上移动一点,超过一个时才会显示正常,margin才会正常起效

解决:使用span包裹在input外面即可

24、使用正则表达式获取html中的属性

Pattern p = Pattern.compile("<img[^<>]*?\\ssrc=(['\"])?(.*?)\1?\\s.*?>");

Matcher m = p.matter(html);

while(m.find()) {

imgPath = m.group(2);

}







                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: