前端常见问题

forEach 循环

1、foreach里面return 直接跳出本次循环,进入下一次循环;

splice对数组进行删除、添加操作

var arr = ['1','2','3'];
1、splice(0,0,'4') //从第0个位置开始插入
2、splice(2,1)//2 表示删除元素的位置,删除元素的个数

JSON字符串与对象互相转换

   pageDataList = {	data:'对象转化成字符串'}
    1、JSON.stringify(pageDataList )//对象转化成字符串
    2、JSON.parse('字符串转化成对象') //字符串转化成对象

jquery在父窗口中获取iframe中的元素

在运用一下方法时因考虑到H5的加载机制,必须等到iframe加载完成才可使用,内联js会按顺序正常加载,这样可以取到dome节点,但是外联的js会先于iframe加载,这时就拿不到dome节点。
1、方法一:

格式:$("#iframe的ID").contents().find("#iframe中的控件ID").click();//jquery 方法1  
实例:$("#ifm").contents().find("#btnOk").click();//jquery 方法1  

2、方法二:

格式:$("#iframe中的控件ID",document.frames("frame的name").document).click();//jquery 方法2  
实例:$("#btnOk",document.frames("ifm").document).click();//jquery 方法2  

在iframe中获取父窗口的元素

格式:$('#父窗口中的元素ID', parent.document).click();  
实例:$('#btnOk', parent.document).click();  

vue阻止冒泡

函数里传入event,实例如下;

方法一:
<div @click="deleteBannerImg($event)"></div>
deleteBannerImg(event){
	if(event) {
				    event.stopPropagation ? event.stopPropagation(): event.cancelBubble = true;
				  }
}
方法二:
<div @click.stop="doSomething($event)">vue取消事件冒泡</div>

vue阻止默认事件

<div @click.prevent="doSomething($event)">vue阻止默认事件</div>

vue点击右键阻止默认行为

//原生js
<body>
    <div id="box">
        <input type="button" value="按钮" @contextmenu="show($event)">
    </div>
    <script src="vue.js"></script>
    <script>
        window.onload=function(){
            new Vue({
                el:'#box',
                data:{
 
                },
                methods:{
                    show:function(ev){
                        alert(1);
                        ev.preventDefault();
                    }
                }
            });
        };
</script>
</body>
//vue

<body>
    <div id="box">
        <input type="button" value="按钮" @contextmenu.prevent="show()">
    </div>
    <script src="vue.js"></script>
    <script>
        window.onload=function(){
            new Vue({
                el:'#box',
                data:{
 
                },
                methods:{
                    show:function(){
                        alert(1);
                    }
                }
            });
        };
    </script>
</body>

vertical-align失效问题

1、起作用的前提
vertical-align起作用的前提是元素为inline水平元素或table-cell元素,包括 span , img , input , button , td 以及通过display改变了显示水平为inline水平或者table-cell的元素。这也意味着,默认情况下, div , p 等元素设置vertical-align无效。
2、取值
vertical-align可以有以下取值方式:

(1)关键字:如 top , middle , baseline(默认值) , bottom , super , sub , text-bottom , text-top

(2)长度值:如10px,-10px(均为相对于baseline偏移)

(3)百分比值:如10%,根据 line-height 作为基数进行计算( 重要 )后的值。

js判断字符串是否包含在一个字符串中

String对象的方法
方法一: indexOf()

var str = "123";
console.log(str.indexOf("3") != -1 );  // true

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。
方法二: search()

var str = "123";
console.log(str.search("3") != -1 );  // true

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1。
方法三:match()

var str = "123";
var reg = RegExp(/3/);
if(str.match(reg)){
    // 包含        
}

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
RegExp 对象方法
方法四:test()

var str = "123";
var reg = RegExp(/3/);
console.log(reg.test(str)); // true

test() 方法用于检索字符串中指定的值。返回 true 或 false。
方法五:exec()

var str = "123";
var reg = RegExp(/3/);
if(reg.exec(str)){
    // 包含        
}

exec() 方法用于检索字符串中的正则表达式的匹配。返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

css text-decoration下划线 删除线 上划线属性样式

text-decoration : none || underline || blink || overline || line-through
text-decoration下划线CSS单词值参数:
text-decoration:none 无装饰,通常对html下划线标签去掉下划线样式
text-decoration:underline 下划线样式
text-decoration:line-through 删除线样式-贯穿线样式
text-decoration:overline 上划线样式
查看更多css属性

动态添加style标签

方法一:

var stylee = document.createElement('style');
stylee.type = 'text/css';
stylee.innerHTML = '.navTwoListItem .muenItem:hover{background:'+navSetup.color7+';}';
document.getElementsByTagName('head').item(0).appendChild(stylee);

方法二:

var stylee = document.createElement('style');
stylee.type = 'text/css';
document.head.appendChild(stylee);
sheet = stylee.sheet;
sheet.addRule('.navListItem:before','border-bottom: 6px solid '+navSetup.color6);
sheet.insertRule('.navListItem:before{border-bottom: 6px solid '+navSetup.color6+' }',0);

js判断数组中对象是否存在某个值

var arr = [{
    name: "回锅肉",
    value: "0"
}, {
    name: "小炒肉",
    value: "1"
}]
var result = arr.some(function(item) {
    if (item.name == "小炒肉") {
        return true;
    }
})
console.log(result);//result 为true时表示数组内已存在 false表示不存在

js保留两位小数的方法

1、toFixed()方法
需注意,保留两位小数,将数值类型的数据改变成了字符串类型

		//1、四舍五入
         var num =2.446242342;  
         num = num.toFixed(2); 
         console.log(num); //2.45
         console.log(typeof num); // string

2、Math.floor(),不四舍五入 ,向下取整
注意,不改变数据类型

    	 // 2.不四舍五入 向下取整
    	  var num =2.446242342; 
         num = Math.floor(num * 100) / 100;
         console.log(num); //2.44
        console.log(typeof num); // number

3、字符串匹配
注意,先将数据转换为字符串,最后再转为数值类型

		 // 3.不四舍五入 字符串匹配再转换
		  var num =2.446242342; 
         num = Number(num.toString().match(/^\d+(?:\.\d{0,2})?/));
         console.log(num); //2.44
         console.log(typeof num); // number

4、四舍五入保留2位小数(若第二位小数为0,则保留一位小数)
注意,数据类型不变

		  //4.四舍五入保留2位小数(若第二位小数为0,则保留一位小数)  
		  var num =2.446242342; 
          function keepTwoDecimal(num) {  
               var result = parseFloat(num);  
               if (isNaN(result)) {  
                   alert('传递参数错误,请检查!');  
                   return false;  
               }  
               result = Math.round(num * 100) / 100;  
               return result;  
         };
         keepTwoDecimal(num);
          console.log(num); //2.44
          console.log(typeof num); //number

5、四舍五入保留2位小数(不够位数,则用0替补)
注意,数据类型变为字符串类型

			//5.四舍五入保留2位小数(不够位数,则用0替补)  
			var num =2.446242342;
          function keepTwoDecimalFull(num) {  
               var result = parseFloat(num);  
               if (isNaN(result)) {  
                   alert('传递参数错误,请检查!');  
                   return false;  
               }  
               result = Math.round(num * 100) / 100;  
               var s_x = result.toString(); //将数字转换为字符串
              
              var pos_decimal = s_x.indexOf('.'); //小数点的索引值
              
 
              // 当整数时,pos_decimal=-1 自动补0  
              if (pos_decimal < 0) {  
                  pos_decimal = s_x.length;  
                  s_x += '.';  
              }
 
              // 当数字的长度< 小数点索引+2时,补0  
              while (s_x.length <= pos_decimal + 2) {  
                  s_x += '0';  
              }  
              return s_x;  
         }  
 
          console.log(keepTwoDecimalFull(120.5)); //120.50
          console.log(typeof keepTwoDecimalFull(120.5)); //string
          console.log(keepTwoDecimalFull(2.446242342)); //2.45
          console.log(typeof keepTwoDecimalFull(2.446242342)); //string

浮点数保留两位小数

1、将浮点数四舍五入,取小数点后2位
注意,数据类型不变

			//浮点数保留两位小数   
            //1.功能:将浮点数四舍五入,取小数点后2位   
            function toDecimal(x) {   
             var f = parseFloat(x);   
             if (isNaN(f)) {   
              return;   
             }   
             f = Math.round(x*100)/100;   
             return f;   
           }   
           console.log(toDecimal(3.1465926)); // 3.15
           console.log(typeof toDecimal(3.1415926)); //number

2、强制保留2位小数,如:2,会在2后面补上00.即2.00
注意,数据类型变为字符串类型

			 //2.强制保留2位小数,如:2,会在2后面补上00.即2.00   
            function toDecimal2(x) {   
             var f = parseFloat(x);   
             if (isNaN(f)) {   
              return false;   
             }   
             var f = Math.round(x*100)/100;   
             var s = f.toString();   
             var rs = s.indexOf('.');   
            if (rs < 0) {   
             rs = s.length;   
             s += '.';   
            }   
            while (s.length <= rs + 2) {   
             s += '0';   
            }   
            return s;   
           }   
           console.log(toDecimal2(3.1)); // 3.10
           console.log(typeof toDecimal2(3.1415926)); //string

3、保留两位小数 浮点数四舍五入 位数不够 不补0
注意,数据类型不变

			 // 3.保留两位小数 浮点数四舍五入 位数不够 不补0
           function fomatFloat(src,pos){    
             return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);    
           } 
            console.log(fomatFloat(3.12645,2)); // 3.13
           console.log(typeof fomatFloat(3.1415926)); //number

HTML5中input背景提示文字(placeholder)的CSS美化

/* 通用 */
::-webkit-input-placeholder { color:#f00; }
::-moz-placeholder { color:#f00; } /* firefox 19+ */
:-ms-input-placeholder { color:#f00; } /* ie */
input:-moz-placeholder { color:#f00; }

/* webkit专用 */
#field2::-webkit-input-placeholder { color:#00f; }
#field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
#field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

/* mozilla专用 */
#field2::-moz-placeholder { color:#00f; }
#field3::-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
#field4::-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值