javascript 问题
两个数组比较:a.sort().toString() == b.sort().toString()
for循环内有异步方法时,需要闭包
JSON.parse(data)出错时(提示、[nodejs中]),可能是json本身有问题,空对象中加了空格。
xhr, blob, base64
window.URL.createObjectURL(blob): blob是 file和blob对象; 创建一个新的对象URL,该对象URL可以代表某一个指定的File对象或Blob对象.
用法:本地图片预览:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'test.jpg', true); xhr.responseType = 'blob'; xhr.onload = function(e){
if(this.status == 200){
var blob = this.response;
console.log(window.URL.createObjectURL(blob));
}
} xhr.send(null);
注意:1、要见server;2、responseType='blob'; this.responseText:只有为''或'text'时才能看到;3、Blob {type: "image/jpeg", size: 76797, slice: function}
下载图片的另一种方式:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'test.jpg', true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e){
if(this.status == 200){
var uInt8Array = new Uint8Array(this.response);
var i = uInt8Array.length;
var binaryString = new Array(i);
while(i--){
binaryString[i] = String.fromCharCode(uInt8Array[i]);
}
var data = binaryString.join('');
var base64 = window.btoa(data);
console.log('data:image/png;base64,'+base64);
}
}
xhr.send(null);
var uInt8Array = new Uint8Array(this.response); this.response是ArrayBuffer,在它基础上建了一个视图
binaryString[i] = String.fromCharCode(uInt8Array[i]); uInt8Array[i]:是unicode值(0-255),fromCharCode把unicode值转为字符串(Ù)。
var base64 = window.btoa(data); 把字符串编码为base64,解码时atob()
'data:image/png;base64,'+base64 可以访问图片。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一 curl是利用URL语法在命令行方式下工作的开源文件传输工具:curl -v -r 100-200 http://localhost:3000/test.jpg > /dev/null: 检测server是否允许range request。express是支持的。
html状态码206:部分内容,区间请求range request。
print():一种方法,会真正的打印。
jsshell:可以编写js代码
屏幕右键:不知道jquery的方法怎么做,用原生的js也可以实现
document.getElementById('update').oncontextmenu=function(e){
return false;
}
屏蔽中键:用jquery的方法,其实原生的也行
$('#l_r').on('mousedown', function(e){
e.preventDefault();
});
'面试'..replace(/[^\u0000-\u00FF]/g,function($0){return escape($0).replace(/(%u)(\w{4})/gi,"&#x$2;")}) 中文转utf-8
unescape('面试'.replace(/&#x/g,'%u').replace(/\\u/g,'%u').replace(/;/g,'')); utf-8转中文
取对象的属性值,如果属性是参数,不能通过.,而要通过[]
var obj = {
'name': 'sfp',
'age': 27
}
for(var key in obj){
// 这样取不到
console.log(obj.key);
// 这样才可以
console.log(obj[key]);
}
把数组字符串转为数组:JSON.parse();
把数组转为数组字符串:JSON.stringify();
如果浏览器禁用了js,标签本身的onclick事件也执行不了。
click触发点击事件;onclick添加点击的事件处理程序;
window.location.href='http://www.baidu.com'; 在当前页面打开
window.open('http://www.baidu.com'); 在新标签页打开
检测浏览器是否为移动端的:
function isMobile() {
return navigator.userAgent.toLowerCase().indexOf("mobile")>=0;
}
检测浏览器的客户端机器类型
http://my.oschina.net/docin/blog/200663
在js中用console调试是个不错的方式,但是在IE8中却有不支持的现象,会导致你的js出错,所以在开发的时候使用console在firefox中调试可以,
但是,调试完成之后一定记得删除,要不会在IE8中有影响。
闭包学习时,会找<li>的内容,使用事件代理。受这个影响,删除li时,也会用事件代理(父元素)。其实可以给元素加class,给class加事件。
给元素加click事件,如果元素是之后通过.html()方法加载的,则click事件无效
给元素加click事件,删掉该元素,增加该元素,click之后没有反应了。
双击的时候也会触发单击事件
keydown事件添加时:最好加载document,如果加在元素上就会有问题。如果元素是通过js添加的,那就没有keydown的事件了。
KsmM.findByIdAndUpdate:使用Model
var update_klm = {
score : score,
comment : req.body.comment,
ksmname : req.body.ksmname
};
var options_klm = {};
KsmM.findByIdAndUpdate(req.body.ksmid, update_klm, options_klm, function(err){
if(err){
console.log('updateKLM save:'+err);
}else{
console.log('find _id');
console.log('score:'+result.score);
}
})//
上一页
方法一:window.location.href = document.referrer; 很容易陷入死循环中
方法二: js返回上一页的实现方法 http://blog.csdn.net/tony8829/article/details/6450101
onClick="javascript :history.back(-1);"
window.history.go(-1);
ajax,nodejs后台都正常,但是没有调用ajax的success的函数,。
解决办法:使用complete,输出textStatus,原来是预定返回json,但是删除之后不需要传json,只需要传字符串说明就好,所以dataType改为text。
在html中添加onclick 这样也是可以的
<p onclick="javascript:test()">
script标签 type='text/html' 用法 很有趣,已记录。
对象数组排序
_.sortBy(_item, function(item){
return _item.key;
});
很奇特的问题:如果一个函数内部不使用某个变量,则debugger时,找不到那个变量。
$(function($){
$('#delete').on('click', function(e){
var id = '123';
layer.confirm('确定删除吗?', {
btn: ['确定','取消'] //按钮
}, function(){
$.ajax({
type: 'post',
url: '/test', // 可以获取到id
dataType: 'json',
})
.done(function(data){
if(data.code === 1){
// debugger // 获取不到id
// console.log(id); // 如果添加这句,则可以获取到id
layer.msg('删除成功', {icon: 1});
}else{
layer.msg('删除失败', {icon: 1});
}
})
.fail(function(err){
layer.msg('删除失败', {icon: 1});
})
})
})
});
问题 javascript 数组
var a = [1,2,3];
var b = a;
a = [4,5,6];
alert(b); //[1,2,3]
var a = [1,2,3];
var b = a;
a.pop();
alert(b); //[1,2]
a = [4,5,6];//改变的是a引用本身,没有改变数组对象 a.pop();//改变的是数组对象,a引用没有改变。 b = a;//该操作后,b直接指向数组对象,不是b指向a,a再指向数组。 //所以改变a引用并不会对b引用造成影响,改变数组对象可以。
javascript 问题的更多相关文章
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收
执行环境有全局执行环境和函数执行环境之分,每次进入一个新执行环境,都会创建一个搜索变量和函数的作用域链.函数的局部环境不仅有权访问函数作用于中的变量,而且可以访问其外部环境,直到全局环境.全局执行环境 ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- 读书笔记:JavaScript DOM 编程艺术(第二版)
读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...
- 《Web 前端面试指南》1、JavaScript 闭包深入浅出
闭包是什么? 闭包是内部函数可以访问外部函数的变量.它可以访问三个作用域:首先可以访问自己的作用域(也就是定义在大括号内的变量),它也能访问外部函数的变量,和它能访问全局变量. 内部函数不仅可以访问外 ...
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
今天为大家分享一下我自己制作的浏览器滚动条,我们知道用css来自定义滚动条也是挺好的方式,css虽然能够改变chrome浏览器的滚动条样式可以自定义,css也能够改变IE浏览器滚动条的颜色.但是css ...
- JavaScript进阶之路(一)初学者的开始
一:写在前面的问题和话 一个javascript初学者的进阶之路! 背景:3年后端(ASP.NET)工作经验,javascript水平一般般,前端水平一般般.学习资料:犀牛书. 如有误导,或者错误的地 ...
- 梅须逊雪三分白,雪却输梅一段香——CSS动画与JavaScript动画
CSS动画并不是绝对比JavaScript动画性能更优越,开源动画库Velocity.js等就展现了强劲的性能. 一.两者的主要区别 先开门见山的说说两者之间的区别. 1)CSS动画: 基于CSS的动 ...
随机推荐
- 面向对象三大特性一一继承(inheritance)和组合(Composition)
记住2句话(常识),像个正常人思考! 1.“ is-a ”关系 用 继承! 学生是人,学生继承人这个类, 2. “has-a ”关系 用 组合!电脑有显卡,那么我们就在计算机类中增加显卡属性来复用显 ...
- 前端编程工具WebStorm 10 工具的快捷使用方式
1.如果是一个空白的文档,要想快速生成HTML的基本结构,可以写一个! 然后按一下tab键,如果是写的一个标签的名字,则会生成基本的标签结构. 2.h1{}:{}中写要显示的文本 3.h1[]:[]中 ...
- tesseract 4.0 编译安装(CentOS)
1.安装依赖工具 yum install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel 2 ...
- java.lang.NullPointerException - 如何处理空指针异常
当应用程序试图null在需要对象的情况下使用时抛出.这些包括: 调用null对象的实例方法. 访问或修改null对象的字段. 把长度null当作一个数组. 像访问或修改null阵列一样访问或修改插槽. ...
- java jpa 报错
表的字段名不能是数据库的关键字 INSERT INTO `todo`.`todo_item` (description, completed) VALUES ('test 111', false); ...
- Linux运维就业技术指导(八):期中架构考核
一,期中架构考核概述 1.1 架构图 1.2 架构图公司背景概述 公司是一个新兴的人脸识别高新创业公司,公司名称xxxx 老总是博士生导师,还有一个副总是研究生导师 副总同时是研发总监,负责所有的研发 ...
- js中的变量提升(hoisting)
来看如下代码: function HelloJS(){ var array = [1,2,3,4,5]; for(var i in array){ } alert(i); } HelloJS(); a ...
- 安装RabbitMq-----windows
在官网download我们所需要的版本,安装rabbitMq需要erlang支持 rabbitMq :http://www.rabbitmq.com/download.html erlang :ht ...
- IIS中的MIME类型设置
https://www.cnblogs.com/David-Young/p/5323949.html
- 安装Python3后,centos使用yum报错
题记 在之前的文章中我自定义安装了Python3,并且修改了默认的 Python软链,今天想搭建一个 ftp 服务器,使用命令的时候出现了一个错误: 问题 1.使用 yum 安装 ftp工具 yum ...