请考虑以下代码:
for (var i=0;i<3;i++){
var num = i + 0.50;
var output = num + " " + Math.round(num) + " " + num.toFixed(0);
alert(output);
}
Run Code Online (Sandbox Code Playgroud)
在Opera 9.63中我得到:
0.5 1 0
1.5 2 2
2.5 3 2
在FF 3.03我得到:
0.5 1 1
1.5 2 2
2.5 3 3
在IE 7中我得到:
0.5 1 0
1.5 2 2
2.5 3 3
注意粗体结果.为什么会出现这种不一致的情况?这是否意味着toFixed(0)应该避免?将数字舍入到最接近的整数的正确方法是什么?
这里发生了什么?正当我认为我内外都知道JS时,这个宝石出现了.
String.prototype.doNothing = function() {
return this;
};
alert(typeof 'foo'.doNothing()) // object
alert(typeof 'foo') // string
Run Code Online (Sandbox Code Playgroud)
这打破了一些期望字符串的东西,比如jQuery的.text(str)方法.
我正在努力让我的jQuery在IE7中工作,当我发现以下内容时:
$(".regflow").validate({
errorLabelContainer: $("#error-message"),
rules: {
txtTextOnly: {required: true,textOnly: true},
txtNumbersOnly: {required: true,numbersOnly: true},
txtPhoneOnly: {required: true,phoneOnly: true},
txtAreaCodeOnly: {required: true,numbersOnly: true},
txtSimCodeOnly: {required: true,simCodeOnly: true},
txtCprOnly1: {required: true,numbersOnly: true},
txtCprOnly2: {required: true,cprOnly1: true},
txtMailOnly: {required: true,mailOnly: true}
},
messages: {
txtTextOnly: {required: "Dette felt skal udfyldes"},
txtNumbersOnly: {required: "Dette felt skal udfyldes"},
txtPhoneOnly: {required: "Dette felt skal udfyldes"},
txtAreaCodeOnly: {required: "Dette felt skal udfyldes"},
txtSimCodeOnly: {required: "Dette felt skal udfyldes"},
txtCprOnly1: {required: "Dette felt skal udfyldes"},
txtCprOnly2: {required: "Dette …Run Code Online (Sandbox Code Playgroud) 我想在几周内做一个演示,并且想知道:在开发时你需要注意的十大Javascript不兼容性是什么?你绊倒了什么?我可以先从一个开始:
var somevar = {
'internet': 'explorer',
'hates': 'trailing',
'commas': 'in',
'json': 'code', // oh noes!
}
Run Code Online (Sandbox Code Playgroud)
使用像jQuery或base这样的框架可以解决哪些其他常见陷阱?