var tmpLines = []
// $scope.todos.forEach(element => {
// if(!element.isChecked)
// {
// tmpLines.push(element);
// }
// $scope.todos = tmpLines;
// });
$scope.todos.forEach(function(item, index){
if(!item.isChecked){
tmpLines.push(item);
}
})
$scope.todos = tmpLines;
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
// 判断是否支持该方法
if (Array.isArray) {
if(Array.isArray(cars)) {
document.write("该对象是一个数组。") ;
}
}
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
if (cars instanceof Array) {
document.write("该对象是一个数组。") ;
}
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
或者 (condensed array):
var cars=new Array("Saab","Volvo","BMW");
或者 (literal array):
var cars=["Saab","Volvo","BMW"];
Number(null)等于0;Number(undefined)为NaN;null==undefined为true;null===undefined为false
var emps = [‘ss‘,‘nn‘];
emps = null; // 释放指向数组的引用
if (myObj !== null && typeof myObj !== "undefined")
if (typeof myObj !== "undefined" && myObj !== null)
function Demo(){
var obj=new Object();
obj.name="张思";
obj.age=12;
obj.firstF=function(){
}
obj.secondF=function(){
}
return obj;
}
var one=Demo();
// 调用输出
document.write(one.age);
function Demo(){
this.name="张思";
this.age=12;
this.firstF=function(){
}
this.secondF=function(){
}
}
var one=new Demo //或new Demo()
// 调用输出
document.write(one.age);
var person = new Object;
console.log(person);
person.name = "bob";
person.age = 12;
console.log(person);
var person = {
name: "bob", //属性名key可以不使用字符串也可以使用,最终会同意转成字符串
"age": 12
}
console.log(person, person.name, person.age)
name=person.lastname;
name=person["lastname"];name = person.fullName();
name = person.fullName;
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
var var1 = 1; // 不可配置全局属性
var2 = 2; // 没有使用 var 声明,可配置全局属性
console.log(this.var1); // 1
console.log(window.var1); // 1
delete var1; // false 无法删除
console.log(var1); //1
delete var2;
console.log(delete var2); // true
onsole.log(var2); // 已经删除 报错变量未定义
func(); //func()必须执行才会创建carName全局变量,因此打印语句必须放在func()后(在 func() 被第一次调用之前, carName 变量是不存在的即 undefined。func() 被调用过之后,carName成为全局变量。)
console.log(carName); //此处可调用carName,此处可使用 window.carName
function func(){
carName = ‘vava‘;
console.log(carName);
}
var carname="Volvo";
var carname;
var carname="Volvo";
var carname=123; //carname值为123
function varTest() {
var x = 1;
if (true) {
var x = "123"; // x变量变了(注意此处的x作用范围并不只是if块内而是整个函数)
console.log(x); // 123
}
console.log(x); // 123
}
function letTest() {
let x = 1;
if (true) {
let x = 2; // 不同的变量(let定义的x作用范围为if块内)
console.log(x); // 2
}
console.log(x); // 1
}
<button onclick="getElementById(‘demo‘).innerHTML=Date()">现在的时间是?</button> <button onclick="this.innerHTML=Date()">现在的时间是?</button> //修改自身元素的值
<button onclick="displayDate()">现在的时间是?</button>
<input id="test" type="button" value="提交"/>
<script>
window.onload = function(){
var test = document.getElementById("test");
test.addEventListener("click",myfun2);
test.addEventListener("click",myfun1);
}
function myfun1(){
alert("你好1");
}
function myfun2(){
alert("你好2");
}
</script>
var x = ‘It\‘s alright‘;
var y = "He is called \"Johnny\"
可以使用索引位置来访问字符串中的每个字符:carname[7]
字符串可以是对象:
var x = "John"; //原始值即字面值
var y = new String("John"); //对象
typeof x // 返回 String
typeof y // 返回 Object
x.length
if(){
}
else if(){
}
else{
}
const condition = 2
let obj = {
‘1‘ : () => { document.write(1) }, //ES6引入箭头函数,省略函数名直接通过()调用
‘2‘ : () => { document.write(2) },
‘3‘ : () => { document.write(3) },
}
obj[condition]()
var person={fname:"John",lname:"Doe",age:25};
for (x in person) // x 为属性名
{
txt=txt + person[x];
}
/*校验电话码格式 */
function isTelCode(str) {
var reg= /^( (0\d{2,3}-\d{7,8}) | (1[3584]\d{9}) )$/;
return reg.test(str);
}
/*校验邮件地址是否合法 */
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
x = 5; // 变量 x 设置为 5 elem = document.getElementById("demo"); // 查找元素 elem.innerHTML = x; // 在元素中显示 x var x; // 声明 x
JavaScript 只有声明的变量会提升,初始化的不会。
var x = 5; // 初始化 x
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y; // 显示 x 和 y
var y = 7; // 初始化 y
var getName=function(){
console.log(2);
}
function getName(){
console.log(1);
}
getName();
//结果为2
function getName(){ //函数声明提升到顶部
console.log(1);
}
var getName; //变量声明提升
getName = function(){ //变量赋值依然保留在原来的位置
console.log(2);
}
getName(); // 最终输出:2
var x = 0.1;
var y = 0.2;
var z = x + y // z 的结果为 0.3
if (z == 0.3) // 返回 false
解决办法:var z = (x * 10 + y * 10) / 10; // z 的结果为 0.3
for (var i = 0; i < 10; i++) {
var j=100;
}
console.log(i, j); //10,100
var person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person2 = {
firstName:"John",
lastName: "Doe",
}
person1.fullName.call(person2); // 返回 "John Doe"
<!-- angular test -->
<!DOCTYPE html>
<html>
<head>
<meta charset=‘utf-8‘>
<title>angular test</title>
</head>
<body ng-app="myApp", ng-controller="UserCtrl">
<div class="uk-panel" ng-controller="UserCtrl">
<ul class="uk-list uk-list-striped">
<li ng-repeat-start="user in users">
{{user.name}}
</li>
<p>{{user.name}}</p>
<li ng-repeat-end>
{{user.email}}
</li>
</ul>
<!-- 区别于以下 -->
<!-- <ul ng-repeat="user in users" class="uk-list uk-list-striped">
<li>{{user.name}}</li>
<li>{{user.email}}</li>
</ul> -->
</div>
<script src=‘https://cdn.staticfile.org/angular.js/1.5.8/angular.min.js‘></script>
<script>
var myApp = angular.module(‘myApp‘, []);
myApp.controller(‘UserCtrl‘, [‘$scope‘, function($scope){
$scope.users = [
{
name:‘张三‘,
email:‘zhangsan@gmail.com‘
},
{
name:‘李四‘,
email:‘lisi@123.com‘
},
{
name:‘王五‘,
email:‘wangwu@qq.com‘
}
];
}]);
</script>
</body>
</html>
arr.splice(0, 0, "haah"); //当第二个参数num=0时,则在第一个参数的位置处添加一个元素
arr.splice(0, 0, 100);
console.log(arr) //两处打印尽然一样?
arr.splice(1,2) //当第二个参数num>0时,则在第一个参数的位置处删除元素
console.log(arr)
for(var i=0;i<2;i++)
{
arr.splice(0, 0, i);
console.log(arr)
}
console.log(arr)
setTimeout 在执行时,是在载入后延迟指定时间后,去执行一次表达式,仅执行一次
setInterval在执行时,它从载入后,每隔指定的时间就执行一次表达式。
var storage = function () {
var storage = window.cookieStorage;
if (typeof(Storage) !== "undefined") {
storage = window.sessionStorage;
}
this.storage = storage;
this.cookieStorage = cookieStorage;
};
//js中function定义的对象有一个prototype属性; prototype允许我们在创建对象之后来改变对象或类的行为,并且这些通过prototype属性添加的字段或方法所有对象实例是共享的。
storage.prototype.add = function (key, value, ttl) {
var storage = this.storage;
if (typeof(value) === "object") {
value = JSON.stringify(value);
}
storage.setItem(key, value, ttl);
};
var nodes = document.all;
for (var i = 0; i < nodes.length; i++) {
var o = nodes[i];
console.log(o.tagName + ":" + o.id);
}
console.log(document.getElementById(‘person1‘))
console.log($(‘#person1‘).get(0)) //id是#person1,class是.person1 需要引入jQuery库
for (var key in nodes) {
console.log(nodes[key])
}
for(var i=0, len=arr.length; i<len; i++){}
function delArrVal(arr,val){ //查找数组中的某个值并全部删除 第一个参数是查找的数组 第二个参数是删除的值
for(let i=0;i<arr.length;i++){
if(arr[i]==val){
arr.splice(i,1)
i--;
}
}
return arr;
}
//判断undefine
var exp = undefined;
if (typeof(exp) == "undefined")
{
alert("undefined");
}
//判断null
var exp = null;
if (!exp && typeof(exp)!="undefined" && exp!=0)
{
alert("is null");
}
$scope.selectedLabelWordRange = {
range: ‘‘,
text: ‘‘
};
$scope.selectLabelWords = function () {
if (window.getSelection) {
var range = window.getSelection().getRangeAt(0);
$scope.selectedLabelWordRange.range = range;
$scope.selectedLabelWordRange.text = window.getSelection().toString(); //获取选中范围的文字内容
console.log("selected text: " + window.getSelection().toString());
}
}
var range = window.getSelection().getRangeAt(0);
var rect = range.getBoundingClientRect();
var x = rect.left, y = box.top;
var range = new Range();
range.setStart(text.firstChild, 0); //表示第0个子节点,而非第0个字符
range.setEnd(text.firstChild, text.textContent.length); //表示第1个子节点,而非第1个字符
/* 注意setStart和setEnd的参数1若为非文本节点(文本节点eg:span的firstChild;span并不是文本节点), 则参数2表示的是参数1元素的第几个字节点
参数1若为文本节点,则参数2表示的是文本节点的第几个字符. 这样即可获取文本中某段文字的坐标位置.
*/
console.log(range.getBoundingClientRect()) //获取range的clientRect
document.getSelection().addRange(range); //将range加入选中区域,这样即可以看到选中
console.log(document.getSelection().getRangeAt(0));
方法1:setTimeout("func()", 1);
方法2:setTimeout(func, 1);
id = setTimeout(func, 1);
clearTimeout(id);
function moveElement(elementID, final_x, final_y, interval) {
if (!document.getElementById) return false;
if (!document.getElementById(elementID)) return false;
var elem = document.getElementById(elementID);
if (elem.movement) { //保证始终只有一个定时任务执行.
clearTimeout(elem.movement);
}
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
if(xpos == final_x && ypos == final_y){
return true;
}
if(xpos < final_x){
xpos++;
}
if(xpos > final_x){
xpos--;
}
if(ypos < final_y){
ypos++;
}
if(ypos > final_y){
ypos--;
}
elem.style.left = xpos + "px";
elem.style.top = ypos + "px";
var repeat = "moveElement(‘" + elementID + "‘," + final_x + "," + final_y + "," + interval +")";
elem.movement = setTimeout(repeat, interval); //为元素创建属性
}
原文:https://www.cnblogs.com/luckyboylch/p/12330214.html