radio设置属性checked属性不生效

jq中使用attr()函数来设置选择框的checked属性有时会不起作用(设置不生效)

$('#import').attr('checked','checked');

这时可以用prop()函数来设置就可以了(正常设置成功)

$('#import').prop('checked','checked');

attr()和prop()的区别

attr()方法主要是用来处理自定义的DOM属性;

prop()方法主要是用来处理本身就带有的固有属性

使用: 具有true和false属性的属性,就使用prop(),比如checked selected disabled等,其他的使用attr()

mui获取单选、复选框的值

单选框获取值

function getRadioRes(className) {
	var rdsObj = document.getElementsByClassName(className);
	var chackVal = null;
	for(i = 0; i < rdsObj.length; i++) {
		if (rdsObj[i].checked) {
			chackVal = rdsObj[i].value;
		}
	}
	return chackVal;
}

复选框获取值

function getRadioRes(className) {
	var rdsObj = document.getElementsByClassName(className); /*获取值*/
	var checkVal = new Array();
	var k = 0;
	for (i = 0; i < rdsObj.length; i++) {
		if (rdsObj[i].checked) {
			checkVal[k] = rdsObj[i].value;
			k++;
		}
	}
	return checkVal;
}

判断localStorage中指定属性是否存在

1.

if (localStorage.getItem("key") != null) {
	//自定义代码
	alert('key 存在')
} else {
	alert('key 不存在')
}

2.

localStorage.hasOwnProperty('key') ? alert('key 存在') : alert('key 不存在');

localStorage的一些用法

div禁用,不可点击

.notclick{
	pointer-events:none;
}

特殊字符导致的json字符串转换json对象出问题的解决方法

att = att.replace(/[\r\n]/g,"");

解决部分机型返回不刷新问题

//解决部分机型返回不刷新问题
window.onpageshow = function(event) {
	//event.persisted  是否从缓存中读取数据
	if (event.persisted) {
		window.location.reload()
	}
};

强制不换行

white-space:nowrap;

text-align: justify不生效的解决办法

问题:text-align: justify样式在安卓可以正常两端对齐,iOS却不行

解决:

添加text-align-last: justify;

.text {
    text-align: justify;
    text-align-last: justify;
    height:30px;/*注意这里要设置固定高度*/
}

然后添加伪元素::after,使文本不在最后一行

::after {
     display: inline-block;/*行内元素*/
     content: '';
     width: 100%;/*可以挤掉文字,保证不跟文字在同一行*/
     height: 0;
     visibility: hidden;
}

JS正则表达式只允许数字,分号和连字符

/^\d+((;\d+)*|-\d+)?$/

(;\d+)*将检查分隔多个号码“;”

-\d+将检查范围

jq获取多个相同name名的input框的value值

var arr = [];
$("input[name='question']").each(function() {
	arr.push($(this).val());
})
console.log(arr);

获取ID含有特殊字符的DOM元素

原生js

document.getElementById(rowId)

jq:使用属性选择器

//  将所有的id值用双引号包起来,即可进行识别
//  请注意双引号添加的位置,只在id上进行包裹
$('[id="' + rowId + '"]')

获取指定时间的时间戳

function getTargetTime(t) {
    return new Date(t).getTime()
}

时间戳转换为日期

function add0(m) {
	return m < 10 ? '0' + m : m
}
function format(shijianchuo) {
	//shijianchuo是整数,否则要parseInt转换
	var time = new Date(shijianchuo);
	var y = time.getFullYear();
	var m = time.getMonth() + 1;
	var d = time.getDate();
	var h = time.getHours();
	var mm = time.getMinutes();
	var s = time.getSeconds();
	return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm) + ':' + add0(s);
}

js金额转大写

function intToChinese(money) {
    //汉字的数字
    var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
    //基本单位
    var cnIntRadice = new Array('', '拾', '佰', '仟');
    //对应整数部分扩展单位
    var cnIntUnits = new Array('', '万', '亿', '兆');
    //对应小数部分单位
    var cnDecUnits = new Array('角', '分', '毫', '厘');
    //整数金额时后面跟的字符
    var cnInteger = '整';
    //整型完以后的单位
    var cnIntLast = '元';
    //最大处理的数字
    var maxNum = 999999999999999.9999;
    //金额整数部分
    var integerNum;
    //金额小数部分
    var decimalNum;
    //输出的中文金额字符串
    var chineseStr = '';
    //分离金额后用的数组,预定义
    var parts;
    if (money === '') { //不能用==
        return '';
    }
    money = parseFloat(money);
    if (money >= maxNum) {
        //超出最大处理数字
        return '';
    }
    if (money == 0) {
        chineseStr = cnNums[0] + cnIntLast + cnInteger;
        return chineseStr;
    }
    //转换为字符串
    money = money.toString();
    if (money.indexOf('.') == -1) {
        integerNum = money;
        decimalNum = '';
    } else {
        parts = money.split('.');
        integerNum = parts[0];
        decimalNum = parts[1].substr(0, 4);
    }
    //获取整型部分转换
    if (parseInt(integerNum, 10) > 0) {
        var zeroCount = 0;
        var IntLen = integerNum.length;
        for (var i = 0; i < IntLen; i++) {
            var n = integerNum.substr(i, 1);
            var p = IntLen - i - 1;
            var q = p / 4;
            var m = p % 4;
            if (n == '0') {
                zeroCount++;
            } else {
                if (zeroCount > 0) {
                    chineseStr += cnNums[0];
                }
                //归零
                zeroCount = 0;
                chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
            }
            if (m == 0 && zeroCount < 4) {
                chineseStr += cnIntUnits[q];
            }
        }
        chineseStr += cnIntLast;
    }
    //小数部分
    if (decimalNum != '') {
        var decLen = decimalNum.length;
        for (var i = 0; i < decLen; i++) {
            var n = decimalNum.substr(i, 1);
            if (n != '0') {
                chineseStr += cnNums[Number(n)] + cnDecUnits[i];
            }
        }
    }
    if (chineseStr == '') {
        chineseStr += cnNums[0] + cnIntLast + cnInteger;
    } else if (decimalNum == '') {
        chineseStr += cnInteger;
    }
    return chineseStr;
}

数组对象相关

有一个数组对象前来参加

var arr = [{
				"id": "1",
				"name": "小黑"
			}, {
				"id": "2",
				"name": "小白"
			}, {
				"id": "3",
				"name": "小灰"
			}];

判断数组对象中是否包含某个值

/**
 * 判断数组对象中是否有某个值
 * array 要查询的数组
 * attr 要查询的字段
 * val 要查询的字段值
 */
function findElem(array, attr, val) {
	for (var i = 0; i < array.length; i++) {
		if (array[i][attr] == val) {
			return i; //返回当前索引值
		}
	}
	return -1;
};
console.log(findElem(arr, 'name', '小白')) //为-1表示不存在,否则返回查询到的第一个下标

返回包含指定值的对象

//返回包含指定值的对象
var status = arr.filter(function(obj) {//返回arr中包含id=2的对象
	return obj.id == 2;
});

根据数组对象属性删除里面的对象

/*
 * 根据数组对象属性删除对应项
 * @param {Array} arr - 数组对象
 * @param {String} attr - 属性
 * @param {} value - 属性值
 * @return void
 */
 removeByValue(arr, attr, value)
 { 
  var index=0;
  for(var i in arr){
    if(arr[i][attr]==value){
      index=i;
      break;
    }
  }
  arr.splice(index,1);
}
// 移除id=2的项
removeByValue(arr, 'id', '2')

根据数组对象某一属性值排序

function compare(property){
	return function(a,b){
		var value1 = a[property];
		var value2 = b[property];
		return value1-value2;  //正序  [value2-value1为逆序]
	}
}
var result = arr.sort(compare('id'))

数组对象去重

方法1:利用对象访问属性的方法,判断对象中是否存在key

var result = [];
var obj = {};
for(var i =0; i<arr.length; i++){
  if(!obj[arr[i].key]){
	 result.push(arr[i]);
	 obj[arr[i].key] = true;
  }
}
console.log(result); 

方法2:利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值

var obj = {};
arr = arr.reduce(function(item, next) {
	obj[next.key] ? '' : obj[next.key] = true && item.push(next);
	return item;
}, []);
console.log(arr);

删除数组中的指定值

var arr = ["123", "456", "789"];
function removeByValue(arr, value)
 { 
  var index=0;
  for(var i in arr){
	if(arr[i]==value){
	  index=i;
	  break;
	}
  }
   arr.splice(index,1);
}
removeByValue(arr, '123')

图片转base64

function getBase64Image(img) {  
	 var canvas = document.createElement("canvas");  
	 canvas.width = img.width;  
	 canvas.height = img.height;  
	 var ctx = canvas.getContext("2d");  
	 ctx.drawImage(img, 0, 0, img.width, img.height);  
	 var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();  
	 var dataURL = canvas.toDataURL("image/"+ext);  
	 return dataURL;  
}  

var image = new Image();  
image.src = "../img.png";  
image.onload = function(){  
  var base64 = getBase64Image(image);  
  console.log(base64);  
}

JS对象与字符串相互转换

对象转字符串

JSON.stringify(obj)

json字符串转json对象

JSON.parse(str)