1、“$ is not a function”错误的几种可能情况?
- js中引入文件时,把jquery的放在第一个引入,否则会报“$ is not a function”的错误;(原文)
- button控件的id名和函数名相同的话,执行时先找到的是html控件,所以要注意不能重名;(原文)
2、前台报错“302 Found”?
- 出现场景:web项目中,在js中引入了一些静态资源文件;
- 解释:302 Found 是HTTP协议中的一个状态码,可以简单的理解为该资源原本确实存在,但已经被临时 改变了位置;302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。
- 总结:web项目发布后,其中的静态资源文件位置会发生改变,所以不要写相对路径,应该写发布后的绝对路径;
3、JQuery中$.ajax()方法参数详解
$.ajax({
type: "GET",//请求方式
url: "test.json",//请求路径
data: {username:$("#username").val(),content:$("#content").val()},//请求参数
dataType: "json",//返回的数据类型
success: function(data){//请求成功的话执行的方法
}
})
4、jQuery的一些方法
-
属性操作 - val():用于返回或设置被选元素的值;
-
文档操作 - empty() :从被选元素移除所有内容,包括所有文本和子节点;
-
文档操作 - unwrap() :删除被选元素的父元素;
-
文档操作 - wrap() :把每个被选元素放置在指定的 HTML 内容或元素中;
$(".btn1").click(function(){ $(":text").val("Hello World");//设置输入域的值 $("p").empty();//移除p元素的内容 $("p").unwrap();//删除所有p元素的父元素 $("p").wrap("<div></div>");//在 <div> 元素中包裹每个段落 });
-
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
arrayObject.splice(index,howmany,item1,…,itemX);
参数意义:
整数,规定添加/删除项目的位置;
要删除的项目数量,为0时则代表向数组中添加元素;
向数组添加的新元素;
var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />")//George,John,Thomas,James,Adrew,Martin arr.splice(2,0,"William") document.write(arr + "<br />")//George,John,William,Thomas,James,Adrew,Martin
5、css浮动(原文)
-
div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流;
也就是说,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为div元素是独占一行的;
复杂的布局,基本出发点就是:“如何在一行显示多个div元素”,所以需要用到浮动;
-
定义:浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次;
-
j结论:假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。
6、result.data获得后台返回的list集合,list中封装的是map,map中有id这个健
obj= result.data;
var id = obj[0].id;//获得list的第一个map的id的值
7、使用定义的全局变量的值的话,不要用传参的方式了,直接拿来用就ok了!
8、需要靠右边显示的话,就再放在一个div中,为他设置对应的style,不要直接固定写多少px,否则不同的电脑显示效果是不一样的;
9、页面的加载是从上到下有顺序的,如果不注意的话,有ajax异步调用数据的情况,页面的展示就是有问题的;
10、$(selector).attr(attribute,value);//设置被选元素的属性和值。
//导出(根据id为searchForm的搜索表单中的参数进行数据过滤后导出)
function expContractPayExport(){
top.layer.confirm('确认要导出Excel吗?', {icon: 3, title:'系统提示'}, function(index){
//do something
//导出之前备份
var url = $("#searchForm").attr("action");
var pageNo = $("#pageNo").val();
var pageSize = $("#pageSize").val();
//导出excel
//是将id为searchForm的表单的action提交路径改为第二个参数
$("#searchForm").attr("action","${ctx}/expo//expContractPayExport");
$("#pageNo").val(-1);
$("#pageSize").val(-1);
$("#searchForm").submit();//执行submit提交表单!
//导出excel之后还原
$("#searchForm").attr("action",url);
$("#pageNo").val(pageNo);
$("#pageSize").val(pageSize);
top.layer.close(index);
});
}
11、js弹窗
//添加
function add(){
jp.openDialog('添加合同付款', "${ctx}/expo/form",'10px', '60px', $('#expTable'));
}
12、IE浏览器需要特殊处理的地方
- Get请求,只请求一次,其他的都从缓存拿了,所以用post,或者加一个cache.false,或者url中拼一个new date,使每次请求都不一样;
- Get查询中文的话会乱码,所以改成post;
- ie8不支持jquery,只支持原生的js;可以在表头配置一些东西,判断是正在用哪个内核、哪个版本的浏览器,然后进行特殊处理;
- 遇到的问题:
描述:ie浏览器中,ajax提交方式为get的话,保存的数据就无法读取出来,用别的浏览器就能看到;
原因:ie只查一次,其他的都从缓存中读了;
解决:页面数据为了保持更新,ajax请求数据的方式全部改成post;
13、循环取值的几个封装好的方法?
14、开发列表页的时候,不要直接在列项里写xx.xx,这样ie8里取不出来,如果要取,写在formatter里;
15、