十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Oimg.onmouseover=function(){Oimg.style.borderColor="red";}
创新互联-专业网站定制、快速模板网站建设、高性价比清镇网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式清镇网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖清镇地区。费用合理售后完善,10余年实体公司更值得信赖。
或许你还需要鼠标移出的效果:
Oimg.onmouseout=function(){Oimg.style.borderColor="#708090";}
html
head
titledemo/title
style type="text/css"
!--other code--
#d{border:1px solid gray;width:300px;height:100px;font-size:2em;}
.Red{background:red;}
.Green{background:green;}
.Blue{background:blue;}
!--other code--
/style
style type="text/javascript"
function cRed(){
var wDiv=(这里补充) ;
wDiv.className="Red";
}
/style
/head
body
h3点击层下面的按钮,可以设置相应的背景色/h3
div id="d"DIV Elements/divbr/
input type="button" value="red" onclick="javascript:document.getElementById('d').className='Red'"/
input type="button" value="green" onclick="javascript:document.getElementById('d').className='Green'"/
input type="button" value="blue" onclick="javascript:document.getElementById('d').className='Blue'"/
!--other code--
/body
/html
首先申明,请楼主用Chrome浏览器运行代码,这样会有更直观理解(IE9以下可能会报错),可以用console.log输出调试信息。
问题一:
for..in..是用来枚举对象属性/方法,但有限制的,并不是对象的所有属性方法都可以枚举。最简单的解释是,对象的属性/方法有一个是否可枚举(enumerable)特性:按照ECMAScript 5说法,对象属性/方法有四个特性:值(value)、可写性(writable)、可枚举性(enumerable)和可配置性(configuarable),若属性/方法的enumerable特性为true,则该属性/方法可以被for..in..枚举出来;若为false,则无法被for..in枚举出来。每个对象提供一个叫做propertyIsEnumerable方法检测某个属性/方法的enumerable的值。楼主可以运行一下代码:
console.log(Math.propertyIsEnumerable('sin'));//运行结果为false
console.log(Math.propertyIsEnumerable('cos'));//运行结果为false
其实,Math对象是ECMAScript的内置对象,它定义了很多有关数学运算的属性/方法,设计的初衷应该是不希望使用者枚举它的属性,或者说这对使用者并没有实际意义,所以将它的所有属性/方法的enumerable特性设置为false。
至此楼主会有一个疑问,我们是否可以指定自定义对象的属性四个特性的值,回答是肯定的,在ECMAScript 5以前,对象的属性/方法的值(value)都是可设定,而其他三个属性我们是无法设定。但在ECMAScript 5,提供了这个的方法让我们都可以对四个特性进行设定。比如
var o = {};
//添加一个不可枚举的属性x,并赋值1
Object.defineProperty(o, "x", {
value: 1,//值为1
writable: true,
enumerable: false,//不可枚举
configurable: true
});
for(var i in o){
console.log(i);//是无法枚举出x的
}
问题二:
楼主理解有些出入。基本数据类型:数字、字符串、布尔值,而null和undefined是两个特殊的原始值,除了这些外就都是对象了。由此看来,function也是对象,但它是一个特殊的对象。由于function在javascript的特殊作用,以至于被称为一等公民。typeof运算符得到值只有这些:number、string、boolean、undefined、object、function。至于楼主说ECMAScript为何没有提到这些,因为function也被笼统地归纳为对象,只是在使用typeof运算符跟普通的对象有了区别,返回的function而不是object
Function是function对象的构造函数,所以运行typeof Function == 'function'啦。
问题三:
这个涉及到非常多知识点,我只能初略地说一下了。首先我们得清楚一点,NaN是构造函数Number的一个属性。好的,楼主应该会有疑问,构造函数的属性是什么东西?前面已经说过,函数也是对象,既然是对象自然就可向它添加属性方法啦。比如:
function test(){}
test.name = 'test';//添加属性
test.printMyName = function(){
console.log('my name is test');
};
//访问name属性
console.log(test.name);
//调用printMyName方法
test.printMyName();
呵呵,是不是跟一个普通对象没有区别。那好,有了这个概念就好说了。既然NaN是构造函数Number的属性,那么它就自然不可能被Number的实例所继承,当然就不能访问了。
最后推荐两部书:《JavaScript权威指南》(第六版)、《JavaScript高级程序设计》(第三版)
希望对你有用。
1.
for(var i=1000;i=9999;i++){
if(i%13==0){
var n2 = Math.floor(i/10)%10;
var n3 = Math.floor(i/100)%10;
var n4 = Math.floor(i/1000);
if(n2+n3==n4)
console.log("满足条件的数为:"+i);
}
}
2.
var sum = 0, start = 1, end=0, n=1;
while(start 500) {
for(n = start; sum 1000; n++) {
sum += n;
if(sum == 1000) {
end=n;
console.log("连续相加为1000的连续正整数为:"+start+"到"+end);
}
}
start++;
sum = 0;
}
正解:
javascript是一个弱类型的语言,是一种脚本语言,所以对类型支持比较简单
只有三种类型 数值型(int,double等)、字符串(String)、和对象(Object)
str1和str2 是通过new取得的两个对象,所以比较的时候是按照Object来比较的,所以引用不同的两个对象用==比较一定是false
str2和str3,str3=“56”,这时候str3被认为是String类型来处理,==比较的时候如果遇到一方为String类型会尝试将另外一个也转换成String类型来处理,之后比较其内容。
所以,str2==str3结果是true
同样:56 和"56"比较的时候也是把56(数值型)转为String然后与String类型的"56"做比较,结果为true
var num;
var max = 0;
for (var i = 0; i 3; i++) {
num = Math.ceil(Math.random() * 100) + 1;
document.write(num + 'br /');
if (num max) {
max = num;
}
}
document.write('最大的是:' + max);