Web开发经验笔记

  1. 如果提交的参数是名字和编码都要提交,则把val设置为编码值,text设置为名字,在通过js把获取到的text的值赋给隐藏的控件。
  2. 当出现多选的时候sql语句整体或形式判断使用含有其中某个字段,然后在里面挨个判断后面加or,最后拼接完成后去掉最后一个or即可。
  3. 在Html中如果设置了中间层的高度底部还是动态变化,可以把底部元素放在一个层里,就可以解决。
  4. 在js中如果把long型数据作为string类型进行数据库查询的时候,注意需要加单引号将它转为字符串,否则有时候传进去的值会发生变化。
  5. 在表连接中,只有join(inner join)关键字表示如果表中至少一个匹配,则返回相应的行;left join 表示即使右表中没有匹配,也从左表中返回所有的行;right join表示即使左表中没有匹配,也从右表返回所有的行;full join只要其中一个表中存在匹配,就返回行。
  6. 如果出现sql语句错误,可以将语句拷贝到SqlServer上来检查语法错误。
  7. 在js里面带参数的值时,不需要加单引号,直接赋值就可以。
  8. 拼接字符串的时候注意,键和值都必须用引号包住,除了数字之外,每个对象里面的键值对通过‘,’隔开,然后在js中通过调用eval()将JSON字符串转为一个对象,然后通过for循环遍历,或者通过jQuery的$.each()方法遍历。第一个参数为eval()方法转换过的数据,后者为函数遍历,参数为索引值和某个具体值。这里需要注意如果要跳出循环,只写return不行,必须为return false,如果return true相当于continue,如果是for循环则使用break跳出循环。
  9. 当多表查询的时候出现有些列没有数据,检查对应的变量的类型是否与数据库表中对应的字段类型一致。
  10. 每次修改js文件的时候如果没有起作用,刷新也不行的时候,可以通过清除浏览器的缓存就可以。
  11. Html中控件的id不能重复,赋值的时候只能赋值一个。如果两个控件的id,name一致的时候,需要通过id寻找该下面对应的控件的名字,然后设置值。
  12. 按钮标签如果没有设置type时,会默认提交表单,再次点击则相应事件不会触发,设置type为button即可只实现点击不会提交表单。
  13. sql语句调用union取结果并集的时候,有时候需要获取总条数,直接用count就可以,如果通过select把结果集包起来时,需要注意在语句后面添加一个别名,否则会报语法错误。
  14. 用jQuery获取元素时,$()括号中.代表取class,#代表取id,this,直接可以存放标签类型名。
  15. sql组合查询的时候,有些字段通过count函数取的时候会有误,这时可以考虑写子查询获取count的值,原因多张表关联可能会出问题,查询到的值不统一,group by 后面接不参与聚合函数的字段。
  16. 更新字段的时候,如果数值型的字段初始化时为null的时候,+=或-=就不起作用,只有字段的值非空时才可以,可以通过isnull处理。
  17. 通过js以get方式在字符串里面拼接提交参数时,参数的值不需要加单引号就可以实现提交,如果加上则把单引号也提交上去了。
  18. 通过js提交表单,默认提交到当前的控制类里面对应的方法。
  19. sql语句中的聚合函数如求和时,如果多张表关联,不支持跨表运算,比如A表的a字段乘以B表的b字段,计算结果可能会有问题,可以通过子查询实现。
  20. 如果把一个表单放在一个list外面。提交的时候就会把整个list中对应input中name属性对应的值都提交上去。
  21. 当返回到页面时经过JSON字符串序列化后的时,如果调用eval或JSON.parse函数生成对象,只需要在其加括号就可以。
  22. 使用sql查询row_number() over (partition by B.CustOrgId order by B.CreateTime desc)的时候,如果没有对应记录,默认就是1.
  23. 如果需要将所有子控件设置为不可编辑状态,通过jQuery的方法,$(".类名  标签名").children().attr("disabled","disabled"),或者置为true也可以。意思是将该标签下的子标签都设置为不可编辑状态。如果恢复可编辑尝试调用removeAttr方法,注意:高版本的需要调用prop方法设置属性,获取radiobutton的值的时候如果attr方法不行可以试试prop方法。
  24. 修改标签之间的值通过jQuery的html方法来设置即可。
  25. input标签显示文本去掉框使用样式中border属性设置为0px即可。
  26. 查询语句出现类型转换错误时,可能原因是两张表的数据类型不一致导致的。
  27. js出现方法未声明,在确定方法存在的情况下修改方法名测试,然后再修改过来。
  28. 获取下拉列表的选中值使用jQuery的方法$("#id option:selected").val();即可,也可以直接使 用$("#id").val()。
  29. 获取表里面的td元素里面的值的时候可以通过table[id=] tr td:nth-child(第几列).each(function(){ $(this).children().val()})。、
  30. 在js中如果已经外面有了双引号,里面只能用单引号。
  31. checkbox在Html5中设置选中和未选中直接使用checked和unchecked即可。
  32. 使用js合并行的时候注意先移除掉右边的,然后调用合并行的rowspan属性即可。
  33. 使用js存储键值对,可以通过自定义map的方法:var hashMap = { Set : function(key,value){this[key] = value}. Get : function(key){return this[key]}, Contains : function(key){return this.Get(key) == null?false:true}, Remove : function(key){delete this[key]} }。
  34. 设置超链接的href为无操作时,如果使用#,有时会出现页面UI发生变化,设置为javascript:void();即可。去掉下划线使用属性text-decoration即可。
  35. 以文件为参数的值进行提交表单的时候需要设置enctype = "multipart/form-data"否则在控制类里面接受不到文件对象。
  36. 采用重定向跳转到另一个action里面只能通过参数形式传递。
  37. 在js中通过eval函数转换为对象时,需要注意,如果属性中有id则可能会出现转换为其他值(id的值超出int的值的话)可以在调用该函数之前把int类型转为字符串类型即可。
  38. 在js中如果对某个方法的参数个数没有传够,注意:测试时不会报错,会导致丢失参数的值无法上传。
  39. sql进行匹配查询即判断该字段的值在表里面有没有包含,可以使用contains函数或patindex函数进行查询。需要注意的是有些数据库不支持contains查询可能缺少索引。sql查询的时候字段后面可以有空字符,但修改字段的值的时候一定不能有空格,否则做匹配的时候会出现匹配不了。
  40. 在通过jquery的val方法进行值清空的时候,如果已经清空再通过attr的方法修改value的值可能不生效,继续采用val("")方法即可。还有情况使用val方法修改控件的值,但是value属性的值没有修改,必须通过attr方法进行修改。页面显示没有修改,但是提交表单获取到的是设置的值。
  41. 如果出现引用的js文件里面的方法调用不了,可以尝试清空浏览器缓存然后进入测试。
  42. js判断是否为整数时  var re = /^[0-9]*[1-9][0-9]*$/; alert(re.test(delayMonth));根据返回值进行判断,这里需要注意返回的值可以直接作为条件判断,不需要进行字符串比较,如果符合条件返回true。
  43. 通过jquery提交表单的时候,注意直接调用对象的action方法是不生效的,只有通过attr设置action的值才可以。
  44. 两个库相同的表而且字段一致时采用insert into A select * from B 即可实现。
  45. 使用字符串进行截取的时候,指定截取长度不能大于字符串本身长度,否则会出现越界异常。
  46. 如果出现数字6大于45的时候,有可能是字符串比较,在js中按照字符串比较了,如果你没有转为整数的时候。在js中调用parseInt方法即可。
  47. 如果页面中的模型绑定的值采用null或者new都不行的时候,可以使用 ModelState.Clear();方法就可以。
  48. jquery中设置选中时,可以通过attr或prop方法,其中attr设置时,如果该属性选中的已经有值则设置选中无效,而prop则可以。
  49. 设置ID时注意方法名不能与ID一致,否则会出现方法不识别。
  50. 注意order by 后面只能为列名不能为数值。
  51. 获取某个id下面的所有下拉列表并设置默认选择为第一个调用:
$ ( "#" + id select" ). each ( function () {
$ ( this ). get ( 0 ). selectedIndex = 0 ;
});
  1. sql语句可以通过year和month函数获取时间类型的字段的年和月等其他数据。
  2. 如果通过js在table的tbody标签里面添加行的时候,前提页面必须要有tbody标签,有些浏览器会默认会按照tbody放置。
  3. 如果设置表单验证Validform 初始化的时候设置btnSubmit属性的值的时候,注意如果设置的ID为div时,默认会把该层下的所有按钮作为表单提交,首先执行onclick事件然后提交表单。
  4. sql中CONVERT(varchar(10),SubmitTime, 112) 格式化为20160502 CONVERT(varchar(10),SubmitTime, 23) 格式化为2016-05-02 第一个参数表示截取前多少位。
  5. 防止回车键提交表单@onkeydown = "if(event.keyCode==13)return false;"直接加到表单里即可。
  6. 更新数据库中的时间字段时,如果给时间字段等于空,则默认会修改为1900年1月1日。
  7. 设置表单的域名时,如果设置的域名不存在则默认继续执行当前表单的action。
  8. 获取radio或checkbox的选中值可以使用$("input[name='formate']:checked").val()的方法
获取,也可以使用prop方法获取checked的值即可。
  1. mysql中isnull(expr) 的用法:如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。IFNULL(expr1,expr2)的用法:假如expr1   不为   NULL,则   IFNULL()   的返回值为   expr1;NULLIF(expr1,expr2)  的用法:  如果expr1=   expr2     成立,那么返回值为NULL,否则返回值为   expr1。
  2. bootstrap模态框显示和隐藏时执行相关方法
show.bs.modal 在调用 show 方法后触发。
shown.bs.modal当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。
hide.bs.modal当调用 hide 实例方法时触发。
hidden.bs.modal当模态框完全对用户隐藏时触发。
$('#模态框ID').on('show.bs.modal', function () {// 执行一些动作...})
  1. 设置radio和checkbox的选中时调用prop方法,用attr方法只能生效一次,后面属性值改了,但是页面没有选中。
  2. sql语句中的substring方法中开始索引是从1开始的,而在Java和js中是从0开始。
  3. 根据某个字段排序然后获取第一条,采用row_number() over(partition by 列名 order by 字段名) as num然后根据关联查询num=1的即可。注意:当使用多个字段排序的时候如果没有指定升降序,默认为升序,需要为降序则直接在列名后面加desc即可,需要在每个需要降序的字段名后面都要加。
  4. 调用js文件出现汉字乱码时,修改文件的保存数据类型为UTF-8即可。判断js解析数字出现NaN时不能直接等于判断,调用isNaN函数判断即可。
  5. jQuery获取input标签时不能调用html()会获取到空。这里需要注意通过html获取的字符串不包括根标签。
  6. 如果通过layer_confirm打开窗口,选择layer.closeAll('dialog');关闭对话框。
  7. 处理input框时如果要求没有光标显示使用οnfοcus="this.blur();即可。
  8. 根据get方式提交数据的时候,如果参数的值时json字符串,这时需要调用encodeURI()方法对字符串进行编码否则传到后台数据不完整,因为json字符串有引号,传到后台只有第一个引号之前的数据,而且注意需要设置服务器的URIencoding为UTF-8.
  9. 根据input的name和value查找对应的对象时,采用find("input[name=ivalue][value='2342']")即可。修改点击时出现手势提示调用style使用属性cursor: pointer;即可.
  10. 只验证页面元素但不用表单提交可以使用验证表单对象的check()方法,返回true表示验证通过,否则验证没有通过。注意:该方法有两个参数,第一个为true只验证不显示提示信息,false则显示提示信息,第二个参数为选择器对应的控件ID,例Obj.check(false,"#id"),如果只放第二个参数默认返回验证结果,只有在点击提交按钮时才会获取到最新验证结果。否则验证结果不会根据调用该方法变化结果。
  11. 页面元素显示不全,检查遍历对象时对应的属性大小写是否一致,否则影响后面元素的显示。
  12. 采用jstl表达式进行遍历时需要获取当前索引值时,可以使用varStatus="status"通过status.index来获取,这里的index是从0开始的。
  13. 在IE上传文件的时候,上传文件控件不允许通过其它控件触发该控件的点击实际,必须是直接点击,否则会导致文件上传不上去,可以通过样式使上传文件控制浮在按钮上面,这样点击按钮就会自动执行上传控件的点击事件。
  14. 如果需要在js文件中引用其它js文件在改js文件中document.write(”<script language=javascript src=’/js/import.js’></script>”);即可引用到相应的js。
  15. 禁用input框类型为text的采用$("input[type='text']").attr("disabled","disabled");注意input后面不能有空格。里面不支持或关系拼接。
  16. 当text-align设置为"justify",每一行被展开为宽度相等,左,右外边距是对齐(如杂志和报纸)。line-height设置行高。letter-spacing设置字符间距。word-spacing设置单词之间的空间。text-shadow设置文字阴影,text-indent缩进元素中文本的首行。
  17. 当设置为若干链路状态的样式,也有一些顺序规则:a:hover 必须跟在 a:link 和 a:visited后面;a:active 必须跟在 a:hover后面。
  18. border-collapse 属性设置表格的边框是否被折叠成一个单一的边框或隔开。border-color单独使用是不起作用的,必须得先使用border-style来设置边框样式。
  19. sql转数据类型方法:CAST(列名 as int)   或 convert(int,列名)。
  20. $("#selectid option:selected").attr("lang")用来获取下拉列表选中项的属性对应的值。
  21. css定位:static静态定位的元素不会受到top, bottom, left, right影响;fixed定位的元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动而且元素的位置与文档流无关,因此不占据空间。relative定位可以移动元素的内容和相互重叠的元素,它原本所占的空间不会改变。absolutely定位使元素的位置与文档流无关,因此不占据空间。其元素和其他元素重叠。如果两个定位元素重叠,没有指定z - index,最后定位在HTML代码中的元素将被显示在最前面。Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。浮动元素之后的元素将围绕它。浮动元素之前的元素将不会受到影响;元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性。clear 属性指定元素两侧不能出现浮动元素。注意:: 如果先有"overflow:visible",clip属性不起作用。  clip  设置元素的形状。唯一合法的形状值是:rect (top, right, bottom, left)。
  22. 在js中清空一个对象,可以用两种方式,赋值null或undefined,通过typeof操作符检查变量
的数据类型:
typeof undefined // undefined typeof null // object
null === undefined // false null == undefined // true
typeof NaN // 返回 number
  这里需要注意,当赋值一个变量为null的时候,typeof 操作符会认为是一个对象。
  1. constructor 属性返回所有 JavaScript 变量的构造函数:
"John".constructor // 返回函数 String() { [native code] }
(3.14).constructor // 返回函数 Number() { [native code] }
false.constructor // 返回函数 Boolean() { [native code] }
[1,2,3,4].constructor // 返回函数 Array() { [native code] }
{name:'John', age:34}.constructor // 返回函数 Object() { [native code] }
new Date().constructor // 返回函数 Date() { [native code] }
function () {}.constructor // 返回函数 Function(){ [native code] }
  1. 全局方法 Number() 可以将字符串转换为数字。字符串包含数字(如 "3.14") 转换为数字 (如 3.14).空字符串转换为 0。其他的字符串会转换为 NaN (不是个数字)。
  2. JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。严格模式:"use strict" 指令只运行出现在脚本或函数的开头。0 为 false,1为true。
  3. JavaScript 中的所有浮点数据都是以 64 位浮点型数据(float) 来存储。js中定义的小数直接相加获取到和为小数点后多位而不是一位(只是在部分情况会出现,所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定,所以根据计算结果截取位数toFixed())。注意:不用对 return 语句进行断行。定义变量可以换行。
  4. 如果你使用名字作为索引,当访问数组时,JavaScript 会把数组重新定义为标准对象。执行这样操作后,数组的方法及属性将不能再使用,否则会产生错误:    定义数组和对象最后一个元素后面不能有逗号。
  5. 在 JavaScript 中, null 用于对象, undefined 用于变量,属性和方法。对象只有被定义才有可能为 null,否则为 undefined。需要先使用 typeof 来检测对象是否已定义。
  6. href="#"与href="javascript:void(0)"的区别:# 包含了一个位置信息,默认的锚是#top 也就是网页的上端。而javascript:void(0), 仅仅表示一个死链接。在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id
  7. 变量名不要以 $ 作为开始标记,会与很多 JavaScript 库冲突。使用简洁的格式载入 JavaScript 文件 ( type 属性不是必须的):    函数表达式可以 "自调用"。自调用表达式会自动调用。如果表达式后面紧跟 () ,则会自动调用。
  8. 需要特别注意:调用的jQuery的html()时在某些浏览器中会将html标签全部转为大写,比如IE浏览器。arguments.length 属性返回函数调用过程接收到的参数个数(以实际调用个数为主)。
  9. call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。通过 call() 或 apply() 方法你可以设置this 的值, 且作为已存在对象的新方法调用。
  10. 闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭。绝对不要在文档加载完成之后使用 document.write()。这会覆盖该文档。
  11. onload 和 onunload 事件会在用户进入或离开页面时被触发。onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。onload 和 onunload 事件可用于处理 cookie。在js标签中自调用函数比onload函数优先执行。jQuery的$(function(){});该方法是在onload方法执行之后执行。
  12. element.addEventListener(event, function, useCapture);第一个参数是事件的类型 (如 "click" 或 "mousedown").第二个参数是事件触发后调用的函数名也可以直接匿名函数赋参。第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。注意:不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。 addEventListener() 方法允许向同个元素添加多个事件,且不会覆盖已存在的事件。在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素;在 捕获中,外部元素的事件会先被触发,然后才会触发内部元素的事件。默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。
  13. JavaScript for...in 语句循环遍历对象的属性。注意: for...in 循环中的代码块将针对每个属性执行一次。
  14. 字符串大小写转换使用函数 toUpperCase() / toLowerCase():调用trim()方法时,有些浏览器不支持,可以使用jQuery的$.trim(param)方法,param为需要去掉空格的字符。
  15. js数组相关操作方法:合并两个数组 - concat() 用数组的元素组成字符串 - join();删除数组的最后一个元素 - pop();数组的末尾添加新的元素 - push(x) ;将一个数组中的元素的顺序反转排序 - reverse() ;删除数组的第一个元素 - shift();从一个数组中选择元素(类似于字符串的substring()) - slice(x,y) ;数组排序(按字母顺序升序)- sort();在数组的第2位置添加一个元素 - splice(x,y,p1....) 第一个参数为开始索引值,从0开始;第二个参数为从开始的索引开始替换几位元素,后面是替换的元素,多个元素以逗号分隔即可。转换数组到字符串 -toString() ;在数组的开头添加新元素 - unshift(x)。
  16. js中如果布尔对象无初始值或者其值为: 0   -0  null  ""  false  undefined NaN 那么对象的值为 false。否则,其值为 true(即使当自变量为字符串 "false" 时)!(注意js中如果变量未初始化则默认为undefined。
  17. 来自 navigator 对象的信息具有误导性,不应该被用于检测浏览器版本,这是因为:a. navigator 数据可被浏览器使用者更改 b. 一些浏览器对测试站点会识别错误 c.浏览器无法报告晚于浏览器发布的新操作系统。
  18. 在 JavaScritp 中使用计时事件是很容易的,两个关键方法是:setInterval() - 间隔指定的毫秒数不停地执行指定的代码;setTimeout() - 暂停指定的毫秒数后执行指定的代码。clearTimeout(obj)obj为事件的对象例如:var obj = setTimeout(function,300),clearInterval(obj)跟前面的方法一样。注意:如果开启了多个计时器事件,最后需要关闭的话必须每个变量定义一个计时器,否则会导致计时器没有全部关闭,setTimeout如果只执行一次,如果没有递归调用自己会停止。传参的时候注意setTimeout第一个函数名作为参数可以加括号,但是setInterval()只能是方法名不能加括号。
  19. 使用document.cookie获取缓存内容,设置 cookie 的过期时间 expires。var expires = "expires="+d.toGMTString();修改缓存直接document.cookie="sdfsa"即可,如果已存在则修改,不存在则添加。键值对根据键名判断。
  20. 调用远程jQuery库<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script> (远程镜像库,一般直接调用本地库可以提高加载速度)。
  21. 通过js设置style样式的时候可以调用jQuery的css方法,通过控件的css方法直接设置对应的属性及属性值。比如$("#id").css("margin-left","23px")。
  22. 编辑页面处理某些字段的去重功能时判断当前字段是否跟之前的字段相同,相同则不需要数据库查询,这样避免sql传入一个旧字段值和新字段值。
  23. window.top.location 作用是在嵌套的子页面里调用跳出页面框架刷新整个窗口页面。
  24. 获取当前鼠标的坐标采用οnclick="whichButton(event)在js中通过获取event.clientX,event.screenX获取当前屏幕对应的坐标点。 οnkeyup="whichButton(event)"用来获取键盘按下事件,通过event.keyCode来获取按钮对应的编码值。
  25. 下拉列表的size属性控制显示元素个数。默认显示一个。支持ctrl或shift多选需要设置multiple属性为true即可,有些浏览器如果设置不能多选需要移除该属性。通过获取下拉列表的长度遍历每个下拉列表,通过selectedIndex获取选中的索引值,通过数组访问形式访问对应的值。通过下拉列表的对应调用remove方法删除对应的选项,参数为选项的索引值。
  26. 在sql获取count数量的时候里面不能有排序,如果要加排序字段,必须将排序字段添加到group by 后面,最后再拼接排序sql。注意:调用sql的sum函数的时候,需要考虑null,如果根据条件查询到结果为空,那么显示的sum最后的值也为null,通过isnull函数处理即可。
  27. 设置文本域不能拖动调用style属性resize: none;即可。
  28. IE浏览器清除缓存通过开发工具或者ctrl+R组合键删除,ctrl+shift+delete删除的只是浏览器的历史记录和临时文件等数据,并没有显示删除缓存。其它浏览器调用该组合键的时候会显示删除缓存。
  29. 设置Ztreecheckbox样式时,注意检查是否引用扩展checkbox包,设置border的宽度时,如果没有显示,需要设置border-style属性。
  30. 页面展示多张图片的时候,每行如果有三张图片,每个图片的大小不一致会导致页面显示错乱,最后设定图片的宽和高即可。
  31. 调用百度地图map函数生成图标的时候,有时候图片很大,只需要图片里的一个小图标,这里需要注意检查<img>的宽度不能给100%否则会把图片压缩显示。最好不用设置宽度采用默认即可。
  32. 获取一个控件的disabled对应的值时,如果第一次正常而第二次显示undefined,则检查是否有与该id相同的两个控件。
  33. eclipse设置web工程的输出路径在java build path选项里面,最下面有个默认输出路径,如果出现编译后之前的目标路径里没有classes文件夹,则检查该路径是否正确。 
  34. 设置自动换行采用white-space 属性为normal即可。注意:设置padding和width属性时,在input标签中宽度包含padding-left和padding-right之和,而在其它标签中宽度不包含padding-left和padding-right的之和。
  35. 调用的jQuery的show和hide方法显示和隐藏,隐藏后不占用空间,调用visiblity样式属性隐藏就会占用空间,方法obj.css("visibility","visibility");
  36. 使用绝对定位,如果左边的占用一部分空间,右边层需要占用剩余的采用right=0即可,如果使用width=100%会造成页面水平滚动。
  37. 页面字体格式类型主要有几个大分类:TrueType、Embedded Open Type 、OpenType、WOFF 、SVG。
A.TrueType
Windows和Mac系统最常用的字体格式,其最大的特点就是它是由一种数学模式来进行定义的基于轮廓技术的字体,这使得它们比基于矢量的字体更容易处理,保证了屏幕与打印输出的一致性。同时,这类字体和矢量字体一样可以随意缩放、旋转而不必担心会出现锯齿。
B.EOT – Embedded Open Type (.eot)
EOT是嵌入式字体,是微软开发的技术。允许OpenType字体用@font-face嵌入到网页并下载至浏览器渲染,存储在临时安装文件夹下。
OpenType (.otf)
&mnpOpenType是微软和Adobe共同开发的字体,微软的IE浏览器全部采用这种字体。致力于替代TrueType字体。
C.WOFF – Web Open Font Format (.woff)
WOFF(Web开发字体格式)是一种专门为了Web而设计的字体格式标准,实际上是对于TrueType/OpenType等字体格式的封装,每个字体文件中含有字体以及针对字体的元数据(Metadata),字体文件被压缩,以便于网络传输。
D.SVG (Scalable Vector Graphics) Fonts (.svg)
SVG是由W3C制定的开放标准的图形格式。SVG字体就是使用SVG技术来呈现字体,还有一种gzip压缩格式的SVG字体。
  1. 设置页面中的字间距使用letter-space,设置单词直接的间距使用word-space(对于汉字来说相当于空格分隔的句子直接的间距),设置行间距可以通过行高line-height属性实现。
  2. 使用niceValidateor验证框架的时候,里面有remote属性需要注意,传递参数的时候name值需要是表单中已经存在的;可以传递无限个参数;每个参数之间用英文逗号分隔,逗号后面的空格必须要有。链接:http://niceue.com/validator/demo/remote.php
  3. 使用mysql删除多张表数据时,如果框架支持同时执行多条sql语句直接写相关删除语句即可,如果不支持可以采用表关联删除,delete后面跟表别名.*用逗号分隔即可删除相关表的信息。
  4. 判断是否存在样式可以使用$(obj).hasClass()里面为样式名称,注意:obj为标签,里面标签的class找不到,只能查找当前标签的class。
  5. 行合并只能在同一个父标签内。
  6. 出现前台页面提交到后台获取汉字乱码时,在web.xml文件中添加过滤器进行转码
<filter>
<filter-name>chineseEncoding</filter-name>
<filter-class>com.test.filter.CharacterEncoding</filter-class>
</filter>
<filter-mapping>
<filter-name>chineseEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
  1. 出现400异常description: The request sent by the client was syntactically incorrect.检查是否页面name对应的模型有不是string类型的。
  2. Mysql使用group_contact()合并行数据,里面可以有order by 条件。
  3. js替换全部字符串replace(/-/g,"")两个/中间为替换的字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值