误区、杂项

当a标签内有元素时,即使a标签的高度为0或auto,点击a标签的子元素时也是可以触发链接的跳转

<a href="#">跳转到页面的头部</a>

<a href="#location">跳转到id为location的那个元素的位置</a>

跳转到其他页面中某个元素的位置就在其他页面的相对路径或者绝对路径后面加上“#那个元素的id”

HTML5不再支持a标签的name属性

a标签的href属性可以写相对路径也可以写绝对路径,写绝对路径要加上http://

给a标签使用target="_blank"属性,在新标签页打开

浮动元素本身可以清除任何因其子元素浮动所产生的高度塌陷

overflow: hidden;也能解决因子元素浮动造成父元素高度塌陷的问题(把overflow: hidden;写在父元素上),但是可能会造成溢出父元素宽高的那部分被裁减的效果

当被选元素多时,attr()只匹配第一个

top、right、bottom、left四个方向上的边框,相邻两条边相交时,相交的地方就会产生斜线,斜线的角度与相邻的两条边框的宽度相关

fill()方法只能用在chrome和firebox浏览器,IE、Opera、Safari都不支持

IE浏览器不支持initial关键词,把width: initial;换成width: auto;

toFixed(n) 将数字四舍五入成保留n位小数

id的命名不能以数字开头,以数字开头的id虽然js能识别,但是css不识别,但id的中间可以有数字

id的命名可以以中横线(-)和下划线(_)开头

id中不能包含冒号(:)、小数点(.)还有$

 

HTML不区分大小写,<div class="Main" data-billNo="23456”></div>浏览器会解析成

<div class="Main" data-billno="23456”></div>

属性名的大写会被解析成小写

js区分大小写,$(“.Main").data("billNo”)是不好使的

$(“.Main").data("billno”)才好使,但是属性值的大写经过解析后还是大写,所以

$(".Main”)是好使的,$(“.main”)是不好使的

var names={"1":"zhaosi","2":"xieguangkun"};取值时用names[1],而不是names.1

HTML文件也可以是.htm后缀也可以是.html后缀

 

var element = document.getElementsByTagName("input");

element是个数组,使用时要$(element[0]).blur(function(){console.log("input")});

blur是jQuery事件,onblur可以写在HTML元素的行内,原生js里没有blur事件,element[0].blur()是错的

blur()的括号里可以是调用的函数名或者匿名函数,不能直接写执行语句,$(element[0]).blur(console.log("input"))是错的

<input type="text" onblur = "console.log('行内事件可以直接执行语句')">

 

transform:rotate(45deg) scale(0.8,1.2);多个属性时用空格隔开

transition:width 2s,height 2s;多个属性时用逗号隔开

 

对象的拓展

var obj = $.extend({},obj1,onjN)  不会改变obj1

var obj = $.extend(obj1,onjN)  会改变obj1

 

在程序里return 0.00时在浏览器中只显示0,要想显示0.00得return "0.00"

 

git解决冲突:

保存当前内容,删掉这个文件,拉一下,把之前保存的粘贴进去,再add . commit pull push

在文件里有HEAD之类的提示,保留一种,然后再提交一次,带HEAD那块儿是自己写的

<<<<和====之间的内容是当前分支上的内容,HEAD指向当前分支的最新提交;====和>>>>之间的内容是Merge过来的分支的内容,>>>>之后是该分支的名字

 

white-space: nowrap;规定段落中的文本不换行,直到遇到<br>标签为止

给table的父级设置固定宽度和overflow-x:scroll;就能让宽度大于父级宽度的table在父级里滚动了

 

$.ajax({})里面的参数都是可选项

 

@keyframes需要写前缀,如:@-webkit-keyframes

transform也要写前缀,在@keyframes中的transform只要写和@keyframes相同的前缀即可,如:

@-webkit-keyframes mymove {

  -webkit-transform: rotate(7deg);

}

@-o-keyframes mymove {

  -o-transform: rotate(7deg);

}

……

 

使用split计算字符串的长度:

var str = "abcde";var arr = str.split("");console.log(arr.length);结果是5

 

toFixed():把Number四舍五入为指定小数位数的数字,语法:NumberObject.toFixed(num),num默认为0,返回值是string

 

indexOf区分大小写,返回searchvalue字符串在stringObject字符串中首次出现的位置

语法:stringObject.indexOf(searchvalue,fromindex)

fromindex可选,开始检索的位置,取值范围是0到stringObject.length-1,如果省略则从首字符开始检索

stringObject的字符位置是从0开始的,如果没检索到则返回-1

 

判断item的类型:typeof item,返回的是字符串,表示item未经计算的类型

 

typeof Date的返回值是"function"

typeof RegExp的返回值是"function"

typeof {}的返回值是"object"

typeof []的返回值是"object"

typeof Math的返回值是"object"

typeof null的返回值是"object"

typeof undefined的返回值是"undefined"

null==undefined  是true

 

var temp;typeof temp的返回值是"undefined"

typeof temp;var temp的返回值也是"undefined"

 

在es6中变量必须先声明再使用,所以typeof也不是百分百安全的,因为typeof temp;let temp会报错

如果变量根本没有被声名,也不会报错,例:

typeof temp的返回值也是"undefined"

 

Number(有值数组) NaN

Number(有值对象) NaN

Number({}) NaN

Number(函数) NaN

Number(undefined) NaN

Number([]) 0

Number("") 0

Number("12") 12

Number("abc") NaN

Number(null) 0

 

Math.round() 四舍五入取整

NaN不等于任何值,包括NaN

任何涉及NaN的操作都返回NaN,除了NaN != NaN返回true

 

parseInt()返回值只有整数或者NaN

当参数是字符串时,第一个字符若不是数字则返回NaN;若是数字则解析到不是数字为止

 

'123' + 456    '123456'

parseInt('123') + 456     579

 

parseInt()还有第二个参数,是可选的,表示要解析的数字的基数,如果省略或为0,则以10为基数来解析

如果要解析的数字以'0x'或'0X'开头,则以16为基数来解析

如果第二个参数小于2且不等于0或大于36,则返回NaN

 

parseFloat()和parseInt()很像,不同之处:

1. parseFloat()遇到第一个小数点也继续解析

2. parseFloat()的第二个参数不起作用

 

null和undefined没有toString()方法,转化字符串建议用String()

 

background:background-color background-image background-repeat background-attachment background-position;

 

background-size:10% 20%;

10%是该元素宽度的10%,20%是该元素高度的20%

宽度和高度哪项不写哪项就是默认的auto

 

移动端页面里元素的:hover和PC端的不一样

移动端需要点击该元素使其获取焦点才触发,触发后需要点击该元素之外的地方使其失去焦点才恢复

 

 

<button onclick=“clickEvent()”>click me</button>

<script type="text/javascript">

    function clickEvent() {

 

    }

</script>

onclick调的函数,函数名后面要加( )

 

js里则不用在函数名后面要加( ),如:

var btn = document.createElement('button');
btn.innerHTML = 'Click me';
btn.onclick = sayHello;
document.body.appendChild(btn);

function sayHello() {
  alert('hello');
}

 

 

在接口的URL上拼接参数有两种方法:

一. "/corp/v1/products/original?fkCorp=” + this.fkCorp + ‘&&pkDetail=’ + this.pkDetail

二. "/corp/v1/products/original?" + $.param(this.signParams, true)

 

switch语句是按照恒等于来判断的

 

全局安装express后可以在终端里使用express —version来查看express的版本号以确定是否全局安装了express

 

但是全局安装的express-generator就不能使用express-generator —version来查看是否全局安装了express-generator

可以在rick@shichuanzhi目录下cd /usr/local/lib/node_modules然后使用ls来显示内容

return会终止函数执行

return后无内容则返回的是undefined

同一函数内可以写多个return

 

Object.assign()不是深拷贝,Object.assign()拷贝的是属性值

如果源对象的属性值是一个指向对象的引用,Object.assign()只拷贝引用

 

css样式:list-style、text-overflow、white-space、 text-decoration

 

原生js获取select、input等表单元素的值:document.getElementById('app').value

 

var div = document.createElement('div');

div.innerHTML = '内容';

document.getElementById('app').appendChild(div);

 

<select></select>中可以添加<option disabled selected>请选择</option>来增加默认项

 

vue应用里,要给对象的属性赋值,这个属性要在data中先注册,如:

//错误写法

html:

<div v-show="validate.show"></div>

javaScript:

data: {

  validate: {}

},

methods: {

  changeVal(){

    this.validate.show = true;

  }

}

//正确写法

html:

<div v-show="validate.show"></div>

javaScript:

data: {

  validate: {

    show: false //先在data里注册一下,赋个初值

  }

},

methods: {

  changeVal(){

    this.validate.show = true;

  }

}

 

vue中,不能使用箭头函数来定义methods里的函数、watch对象里的函数,因为箭头函数绑定父级作用域上下文,会使this不会按照期望指向vue实例

posted @ 2017-06-15 20:15  chuanzhi946  阅读(223)  评论(0)    收藏  举报