JavaScript学习日记一
alert("perti生成完成");//弹出文本框,提示
JavaScript中prompt()函数的用法。
定义和用法
prompt()方法用于显示一个带有提示信息,并且用户可以输入的对话框。
语法
1
prompt(text,defaultText);
参数 描述
text 可选。要在对话框中显示的提示信息(纯文本)
defaultText 可选。默认的输入文本。
例子
<html>
<head>
<script type="text/javascript">
function disp_prompt(){
var name=prompt("请输入您的名字","Bill Gates");
if (name!=null && name!="") {
document.write("你好," + name + "!今天过得好吗?")
}
}
</script>
</head>
<body>
<input type="button" onclick="disp_prompt()" value="显示一个提示框" />
</body>
</html>
两个将字符串转化为数值得函数parseint();parsefloat();
语法:
document.write(exp1,exp2,exp3,....)
参数解析:
(1).expN:可以是一个或者多个参数,如果是多个参数,那么按照顺序写入文档。(如果写入多个参数的话,这些参数会自动换行显示)
(2)这里的参数可以是变量,也可以是函数体、函数自执行体,数字等等,也可以进行一些简单的运算
(3)参数支持标签属性,写入的时候会按照html进行解析,但是需要用字符串的形式(常用的标签属性就是换行符
)
浏览器支持:
(1).IE浏览器支持此属性。
(2).edge浏览器支持此属性。
(3).谷歌浏览器支持此属性。
(4).opera浏览器支持此属性。
(5).火狐浏览器支持此属性。
(6).safria浏览器支持此属性。
功能:
将一个文本字符串写入由 document.open() 打开的一个文档流。
注意的坑:
1.因为 document.write 写入文档流,在关闭(已加载)的文档上调用 document.write 会自动调用 document.open,这将清除该文档。
2.向一个已经加载,并且没有调用过document.open()的文档写入数据时,会自动完成调用document.open()的操作。一旦完成了数据写入,系统要求调用document.close(),以告诉浏览器页面已经加载完毕。写入的数据会被解析到文档结构模型里。在上面的例子里,元素h1会成为文档中的一个节点。
3.如果document.write()被直接嵌入到HTML主体代码中,那么它将不会调用document.open()。详见如下例子:
<div>
<script type="text/javascript">
document.write("<h1>Main title</h1>")
</script>
</div>
4.连续连个document.write()也不会相互覆盖 是因为document.write(“A”)结束后,默认是不会调用document.close()的,所以第二个document.write(“B”)不会覆盖前一个write的内容,而是进行追加。
function myFunction{
document.write("A");
document.write("B")
} //AB一起输出,而不是B覆盖A
5.我们可以手动调用document.close()方法,关闭由document.open()方法创建的文档流,但是我们无法关闭系统创建的文档流
但是我这样写的话,又达到了“关闭”的效果
这是因为,window.onload表示的是 “An event handler for the load event of a window.”换言之就是文档加载完毕的时候,document.write() 在页面加载后调用,但在W3C规范中没有定义时,会发生自动的 document.open()调用。所以页面才会被清除
JavaScript 支持不同类型的循环:
for - 循环代码块一定的次数
for/in - 循环遍历对象的属性
while - 当指定的条件为 true 时循环指定的代码块
do/while - 同样当指定的条件为 true 时循环指定的代码块
- in运算符:要求其左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数是一个对象或数组。如果该运算符左边的值是右边对象的一个属性名,则返回true。
例如:
var point={x:1,y:2}; //对象直接量
var has_x="x" in point; //返回true
var has_z="z" in point; //返回false
var ts="toString" in point;//返回true,toString为继承方法
- for/in语句:语法,
for (variable in object)
statement;
提供了一种遍历对象属性的方法。
例:
for(var prop in my_object) {
document.write("name:"+prop+";value:"+my_object[prop],"<br>");
}
javascript的数组是一种特殊的对象,因此for/in循环可以像枚举对象属性一样枚举数组下标。
可以把一个对象的所有属性名复制到一个数组中,
例:
var o= {x:1,y:2,z:3};
var a=new Array();
var i=0;
for (a[i++] in o)
;//空语句,用于初始化数组
3. in运算符与for/in语句不同,for/in语句in的左边可以是声明一个变量的var语句,数组的一个元素或者是对象的一个属性,不能使字符串。
4. 数组常用的存取属性运算符是“[]”,而不是“.”。使用“[]”来命名属性名师字符串值,是动态的,可以在运行时改变,而不是一个标识符“.”。
例:
var stock_name= get_stock_name_from_user();//从用户处获取股票名
var share= get_number_of_shares();//得到股票数量
portfolio[stock_name]= share;//动态地创建数组股票,并为每支股票赋值
将该例子与for/in循环一起使用,当用户输入了他的投资组合,可以计算当前总值
var value= 0;
for (stock in portfolio) {
value +=get_share_value(stock)*portfolio[stock];
}
stock存取的是每支股票的名字。
portfolio[stock]存取的是每支股票的数量。
for-in循环
功能:遍历对象属性,把属性名和属性值都提出来
var obj = {
"key1":"value1",
"key2":"value2",
"key3":"value3"
};
function EnumaKey(){
for(var key in obj ){
alert(key);
}
}
function EnumaVal(){
for(var key in obj ){
alert(obj[key]);
}
}
EnumaKey(obj)
//key1 key2 key3
EnumaVal(obj)
//value1 value2 value3
数组也可以这样遍历,但不推荐,因为不能保证顺序,而且如果在Array的原型上添加了属性,这个属性也会被遍历出来。
for-in循环应该用在非数组对象的遍历上,使用for-in进行循环也被称为“枚举”。
从技术上将,你可以使用for-in循环数组(因为JavaScript中数组也是对象),但这是不推荐的。因为如果数组对象已被自定义的功能增强,就可能发生逻辑错误。另外,在for-in中,属性列表的顺序(序列)是不能保证的。所以最好数组使用正常的for循环,对象使用for-in循环。