一、JS 截取字符串
1.1 获取字符串位置
//字符串位置函数
function IndexDemo(str2){
var str1 = "abcdd,dfffg"
var s = str1.indexOf(str2);
console.log('s-->',s);
return(s);
}
1.2 截取子字符串
function subStringF(){
var str1 = "abcdd,dfffg";
var dou = str1.indexOf(',');
ss = str1.substring(0,dou)
console.log('ss-->',ss);
return ss;
}
二、JS删除数组中的元素
2.1 借助splice
2.2 借助filter
function myFunction() {
var aqiData = [
["北京", 90],
["上海", 50],
["福州", 10],
["广州", 50],
["成都", 90],
["西安", 100]
];
console.log(aqiData);
var city="上海";
var newData = aqiData.filter(function(item) {
return item[0] != city;
});
aqiData = newData;
console.log(aqiData);
}
myFunction();
注:上述代码,可以删除元素上海所在的子数组,但这是借助子数组的元素值,下面给出借助数组的index,即第几个子数组。代码如下:
var aqiData = [
["北京", 90],
["上海", 50],
["福州", 10],
["广州", 50],
["成都", 90],
["西安", 100]
];
var
function isBigEnough(element, index, array) {
console.log('element:',element);
console.log('index:',index);
console.log('array:',array);
return (index >= 2);
}
var filtered = aqiData.filter(isBigEnough);
console.log(filtered);
注:上述代码输出时,会删除北京,上海所在的子数组(其index分别是0,1)。
三、js中onclick传参数及setTimeout传参数
3.1 向onclick中传参数
$("#getCoursewareSuccess").append("<li class='clearfix'><img src='/static/img/end_s.png' /><span>"+coursewareValue+"</span><a οnclick=\"getDataUrlThumbnail('"+newFileNameValue+"','"+imgNumValue+"')\">拉取</a></li>");
注:参数要用“++”包起来,再再外面用‘’包起来。截图如下
3.2 向setTimeOut传递参数
setTimeout("getClasswarebyCycle('"+folderName+"','"+img_num+"')", 10);
注:同样也是
参数要用“++”包起来,再再外面用‘’包起来。
四、JS小知识
4.1 void 0
void 0 和undefined是一个意思,即:void 0 === undefined
4.2 !!
var a;
var b=!!a;
a默认是undefined。!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值。!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;
4.3 delete
delete
操作符用于删除对象的某个属性;如果没有指向这个属性的引用,那它最终会被释放。
var Employee = {
firstname: "Mohammed",
lastname: "Haddad"
}
console.log(Employee.firstname);
// expected output: "Mohammed"
delete Employee.firstname;
console.log(Employee.firstname);
// expected output: undefined
4.4 js日志比较好方法
js中,常常会借助console.log打一些日志,按F12会调出来,如下:
但有时,需要对上述日志进行比较,比方说webrtc连接中,你不知道哪一次连接上了,连接上之前的几次连接中,连接参数有什么变化,这就涉及到比较连接的那几次各个参数的变化,但把这些日志复制到sublime中会发生换行,还要进行整理,如下:
但如果复制到word中就很整齐如下:
更神奇的是,两个word日志还能用Beyond Compare进行比较,如下:
所以,这比较起来就非常方便了。
小结:对于js中如果需要进行日志比较,可以把打的日志复制到word中,然后用Beyond Compare进行比较,就可以轻松找出日志间的不同。
4.5js中的try...catch函数
try...catch函数,意思是:try先执行,如果try中报错,catch对错误进行处理,否则,不走catch语句。看个例子
1)try中语句不报错---不走catch
运行结果如下:
注:因为try中没有错误出现,没有错误需要处理,没有捕获到异常,所以不走catch,接下来,我会故意把程序中var _enableLogs = true;写成var _enableLogs = true123;
2)try中语句报错---走catch
运行结果如下:
注:因为try报错了,所以要走catch进行异常处理。
五、改变元素的值
5.1 改变<a>value</a>中的value
jquery方法一:$("#id").html('newValue');
jquery方法二:$("#id").text('newValue');
jquery方法三:$("#id").val('newValue');
原生写法方法四:document.getElementById("id").innerHTML='newValue';
5.2 向js数组中插入元素
1)向数组的头部插入一个元素
arr.unshift('value');
2)向数组的尾部插入一个元素
arr.push('value');
3)splice
a.)向x处添加一个元素
arr.splice(x,0,'value');
b.)将x处的元素替换掉
arr.splice(x,1,'value');
c.)从x处往后(包括x)删除3个元素,并插入一个新值
arr.splice(x,3,‘value’);
看个例子:
注:表示从x位置,向后删除y个元素
4)获取数组的某些元素
arr.slice(x,y,arr);
注:表示获取数组中从x位置,到y位置的元素(包括x,不包括y所指的元素),看个例子如下:
JS精华记录,本文持续更新。。。。