js

Javascript
数组(包括对象)
var ballArray=new Array("basketball","football","pingpong");
for(var b in ballArray)
    document.write(ballArray[b]+"<br/>");
一个不知错对的冒泡
<script type="text/javascript">
var numArray=new Array(10,7,9,1,3,2,5,8,6,4,11,13,12,14,15,18,17,16);
var flag=0;
for (var i=0;i<numArray.length&&flag==0;i++)
{    flag=1;
    for (j=0;j<numArray.length-1;j++)
    {    
        if(numArray[i]<numArray[j])
        {
            temp=numArray[i];
            numArray[i]=numArray[j];
            numArray[j]=temp;
            flag=0;
        }
    }
}
for (var n in numArray)
    document.write("数"+numArray[n]+"<br/>");
</script>
产生10以内的随机整数
parseInt(Math.random()*10)
一个按钮关闭窗口,按钮上的字是value
<input type="button" value="close" onclick="window.close();">
函数体内的变量为局部,函数外的为全局,作用域为整个html文档


定义一个空对象
var phone=new Object();

javascript的构造函数竟然就是一个同名函数

function Dog(x,y,z)
{
    this,name=x;
    this.color=y;
    this.weight=z;
}
var dogA=new Dog("花花","黑色",50);
var dogB=new Dog();
dogB.name="多多";
dogB.color="黄色";

甚至直接定义对象的属性,难道不用构造函数
var dog=new Object();
dog.name="花花";
dog.color="黑色";

对象的方法可以这样定义:
function callName()
{
    alert(this.name);
}
function Dog(x,y,z)
{
    this.name=x;this.color=y;this.weight=z;
    this.call=callName;即将callName挂到了对象的call方法上
}

访问对象属性除了用.还可以用[]这个可以按键访问,可以操作
如Dog属性有name1,name2,name3,即可以dogA["name"+i]访问

with(dogA)
{
    在此访问,不用加对象名和.
}

for(var i in dogA)
{
    document.write(i);此处显示的i为对象的属性及方法名
}
for(var j in dogA)
{
    document.write(dogA[j];此处显示的为对象属性的值和方法的内容
}

数据验证
form的onsubmit="return flase"可以阻止提交
可以写一个function
onsubmit="return check(this);"其中 check再来返回逻辑值

建议把函数的js放到<head>中
可以用载入方法加入js
<script language="javascript" src="menu_data.js"></script>

正则表达式又忘了,复习一下
"s单个空格(包括tab和换行) "S互补
"d数字
"w字母数字下划线 "W互补

^尖头 $钱尾
/"bAAA/ /AAA"b/ "b两头 "B中间

又一个javascript书
定义数组
var objArray=new Array();创建一个空的
var objArray=new Array(2);创建一个长度为2的数组,但不能创建只有2的数组
var objArray=new Array("2","a","b");创建并初始化
又一方法(初始化方法)
var objArray=[];创建一个空的
var objArray=[2];创建一个只有2的数组
var objArray=["a","b","c"];创建并初始化
String对象的match(regExp)匹配正则表达式的方法
如:
while(!str.match(/"d+/))当不为数字时

关于事件
function imgClick(img)
{
    alert(img.src);
}
<img src="1.jpg" onclick="imgClick(this)"/>
在官官相护没有标记的对象如window,document
这些的方法直接传函数名
document.onclick=imgClick;不要加()之类,或加引号都不对

Ctrl+回车提交表单
var txtContent=document.getElementById("txtContent");
txtContent.onkeydown=function(evt){
    evt=evt?evt:window.event;兼容性
    if(evt.ctrlKey&&13==evt.keyCode)this.form.submit();
}

遍历复选框
for (var i=0;i<theForm.elements.length;i++)
{
    if("checkbox"==theForm.elements[i].type)
    //处理语句
}


通过id引用结点
document.getElementById("span1");
通过tag name来引用结点,返回数组
document.getElementByTagName("span");

获取结点内的文本,通常用innerHTML属性
<span id="span1">hello</span>
如下取:
document.getElementById("span1").innerHTML;
亦可用结点的办法
documnet.getElementById("span1").childNodes[0].nodeValue
注:nodeValue只对文本结点有效
创建元素结点
var _table=document.createElement("table");创建一个表格
_table.setAttribute("border","1");设置表格的属性
创建文本结点
_td=documnet.createElement("td");
_tn=document.createTextNode("内容");
_td.appendChild(_tn);将文本作为td的子节点
_tr.appendChild(_td);将_td放入tr的子节点
可以用两层循环来产生一个表格

以上IE不行,tr用insertRow(i),td用insertCell(i)才行

删除一行
_table.deleteRow(i)
删除一列
则要循环每一行来删除列i=0;i<_table.rows.length
_table.rows[i].deleteCell(j);

你可能感兴趣的:(js)