如何在 frame框架页面中获得Javascript 函数的返回值

「已注销」 2016-05-16 12:35:59
有一个页面定义了一个框架
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<jsp:include page="islogin.jsp"></jsp:include>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>main</title>
</head>
<!-- frameset 框架要写在head 与body 标签中间 具自己观察的结果 -->
<frameset rows="20%,*" >
<frame src="top.jsp" name="top" id="top">
<frameset cols="20%,*" >
<frame src="mainleft.jsp" name="left" id="left">
<frame src="mainright.jsp" name="right" id="right">
</frameset>
</frameset>
<body>
</body>
</html>


mainleft.jsp 文件代码如下
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>main-left</title>
</head>
<body>
<a href="view.jsp" target="right">查看信息</a><br/>
<a href="addinfor.jsp" target="right">添加房屋信息</a><br/>
<a href="adduser.jsp" target="right">添加用户信息</a><br/>
</body>
</html>


adduser.jsp 代码如下
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>adduser</title>
<script type="text/javascript" src="script/checkusers1.js"></script>
</head>
<body>
<form action="doadduser.jsp" method="post" id="addform" onsubmit="return checkuser()">
<table border="1">
<tr>
<td>项目名称</td>
<td>添加内容</td>
<td>信息提示</td>
</tr>
<tr>
<td>用户名</td>
<td><input type="text" name="username" id="username"><br/><p id=pstruser></p></td>
<td><p id="name-msg"></p></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password" id="password"><br/><p id=pstrpassword></p></td>
<td><p id="password-msg"></p></td>
</tr>
<tr>
<td>确认密码</td>
<td><input type="password" name="checkpassword" id="confirmpassword" disabled></td>
<td><p id="cpassword-msg"></p></td>
</tr>
<tr>
<td> 所在部门</td>
<td><select name="userbumen" id="userbumen">
<option>大队部</option>
<option>四中队</option>
<option>五中队</option>
<option>六中队</option>
</select>
</td>
<td><p id="bumen-msg">选择所在部门</p></td>
</tr>
<tr>
<td> 用户等级</td>
<td><select name="userdengji" id="userdengji">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</td>
<td><p id="dengji-msg">选择用户等级</p></td>
</tr>
<tr>
<td>备注</td>
<td><input type="text" name="userbz" id="userbz"><br/><p id=struserbz></p></td>
<td><p id="beizhu-msg"></p></td>
</tr>
<tr>
<td> 添加</td>
<td><input type="submit" name="提交" id="btnaddusers" ><input type="reset" name="重置"></td>
<td>错误提示</td>
</tr>

</table>

</form>
</body>
</html>


javascript checkusers1.js 文件代码如下
function getlength(str)
{ return str.replace(/[^\x00-xff]/g,"xx").length
//x00-xff 表示ascII码中的单字节字符 [^\x00-xff]表示取所有双字节字符,
//将所有双字节字符替换成2个字节的任意字符后再统计输入的字符串长度
}
window.onload=function()
{
var addform=window.frames["top"].frames["right"].document.getElementById("addform");
//获取添加用户名form 元素
var btnsubmit=window.frames["top"].frames["right"].document.getElementById("btnaddusers");
//获得提交按钮
var username=window.frames["top"].frames["right"].document.getElementById("username");
//获得用户名输入框
var password=window.frames["top"].frames["right"].document.getElementById("password");
//获得密码输入框
var conpassword=window.frames["top"].frames["right"].document.getElementById("confirmpassword");
//获得确认密码输入框
var beizhu=window.frames["top"].frames["right"].document.getElementById("userbz");

var pstruser=window.frames["top"].frames["right"].document.getElementById("pstruser");
//获得显示用户名输入框字符长度的p标签
var pstrpassword=window.frames["top"].frames["right"].document.getElementById("pstrpassword");
var pstruserbz=window.frames["top"].frames["right"].document.getElementById("struserbz")
var strlength=0;//定义个字符串用于计算字符串的长度

//通过id方式获取元素后 需要同过元素的value属性才能获取相应的输入内容 比如:strusername=username.value

//以下是获取p标签 信息提示框元素
var pusernamemsg=window.frames["top"].frames["right"].document.getElementById("name-msg");
var ppasswordmsg=window.frames["top"].frames["right"].document.getElementById("password-msg");
var pconfirmpasswordmsg=window.frames["top"].frames["right"].document.getElementById("cpassword-msg");
var pbeizhumsg=window.frames["top"].frames["right"].document.getElementById("beizhu-msg");

/*关于frame框架中如何获取相应的元素弄了两天 总结Javascipt 获取相应框架中的元素应该一层一层的进入然后
*在获取元素 window.frames["top"].frames["right"].document.getElementById("username")
*先进入最外层的top 框架 再进入top中的right框架
*/
//用户名要求 字母 数字 中文 长度为2到20个字符
// \u4e00-\u9fa5这个unicode编码区间表示汉字
// \x00-xff 在ascII码中的单字节字符
// 用户名输入框获得焦点 触发事件
username.onfocus=function userfocus()
{ pusernamemsg.style.display="block";
pusernamemsg.innerHTML="请输入2到20个字符,一个中文为2个字符";
}
//用户名输入框失去焦点触发事件

username.onblur=function userblur()
{//当用户名输入框失去输入焦点时验证输入字符合法性并显示提示
//允许的字符包括a-z A-Z 0-9 以及中文字符
//正则表达式为/[\w\u4e00-\u9fa5]/g(全局匹配)
var re=/[^\w\u4e00-\u9fa5]/g
if(re.test(this.value))
{ pusernamemsg.innerHTML="含有非法字符!";
return false;
}else if(this.value.length==0)
{
pusernamemsg.innerHTML="用户名不能为空!";
return false;
}
else if(this.value.length>20)
{
pusernamemsg.innerHTML="用户名长度不能超过20个字符!";
return false;
}else if (this.value.length<2)
{
pusernamemsg.innerHTML="用户名长度不能少于2个字符!";
return false;
}else
{
pusernamemsg.innerHTML="用户名验证成功!";
return true;
}

}
//用户名输入框在输入字符完成触发事件
username.onkeyup=function userkeyup()
{
pstruser.style.display="block";
strlength=getlength(this.value);
pstruser.innerHTML=strlength+"个字符";
if(strlength==0)
{
pstruser.style.display="none";
// pstruser.style.visibility="hidden";
}

}
//密码输入要求 6到12个字符,密码不能用中文
password.onfocus=function passwordfocus()
{//当密码输入框获得输入焦点时显示p标签信息提示框
ppasswordmsg.style.display="block";
ppasswordmsg.innerHTML="请输入6-12个数字以及英文字符!";
pconfirmpasswordmsg.style.display="block" ;
pconfirmpasswordmsg.innerHTML="请再次输入密码!";
}
password.onblur=function passwordblur()
{ var repassword=/[^\w]/g;//匹配数字与英文字符的正则表达式
if(this.value.length==0)
{
ppasswordmsg.innerHTML="密码不能为空!";
return false;
} else if(this.value.length<6)
{
ppasswordmsg.innerHTML="密码不能小于6个字符!";
return false;
}
else if(this.value.length>12)
{
ppasswordmsg.innerHTML="密码不能大于12个字符!";
return false;

} else if(repassword.test(this.value))
{
ppasswordmsg.innerHTML="密码有非法字符!";
conpassword.disabled="disabled";
return false;

} else
{
ppasswordmsg.innerHTML="密码验证通过!";
return true;
}
}
password.onkeyup=function passwordkeyup()
{
if((this.value.length>=6)&&(this.value.length<=12))
{
conpassword.disabled="";
} else
{
conpassword.disabled="disabled";

//当密码输入框的输入字符小于6个或者大于20个字符时将密码确认输入框设为不可用
//密码确认输入框的信息提示p标签页设置为不显示
}
pstrpassword.style.display="block";
strlength=getlength(this.value);
pstrpassword.innerHTML=strlength+"个字符";

}
conpassword.onblur=function confirmpasswordblur()
{
if(password.value==this.value)
{
// pconfirmpasswordmsg.style.display="block";
pconfirmpasswordmsg.innerHTML="两次密码输入一致!";
return true;
} else
{
//pconfirmpasswordmsg.style.display="block";
pconfirmpasswordmsg.innerHTML="两次密码输入不一致!";
return false;
}
}
beizhu.onfocus=function userbzfocus()
{ pbeizhumsg.style.display="block";
pbeizhumsg.innerHTML="备注信息不能超过50个字符!!!!";
}
beizhu.onblur=function userbzblur()
{ if(this.value.length>50)
{ pbeizhumsg.style.display="block";
pbeizhumsg.innerHTML="备注信息超过50个字符,请删除多余备注信息!";
return false;
}
else
{
return true;
}

}
beizhu.onkeyup=function userbzkeyup()
{
strlength=getlength(this.value);
pstruserbz.innerHTML=strlength+"个字符";
}
btnsubmit.onclick=function checkuser()
{ function userblur1()
{//当用户名输入框失去输入焦点时验证输入字符合法性并显示提示
//允许的字符包括a-z A-Z 0-9 以及中文字符
//正则表达式为/[\w\u4e00-\u9fa5]/g(全局匹配)
var re=/[^\w\u4e00-\u9fa5]/g
if(re.test(username.value))
{ pusernamemsg.innerHTML="含有非法字符!";
return false;
}else if(username.value.length==0)
{
pusernamemsg.innerHTML="用户名不能为空!";
return false;
}
else if(username.value.length>20)
{
pusernamemsg.innerHTML="用户名长度不能超过20个字符!";
return false;
}else if (username.value.length<2)
{
pusernamemsg.innerHTML="用户名长度不能少于2个字符!";
return false;
}else
{
pusernamemsg.innerHTML="用户名验证成功!";
return true;
}
}
}
}



我现在想在adduser.jsp页面通过javascript代码检查用户数据是否符合要求,如果正确页面提交,错误页面不提交
可现在我在adduser.jsp页面的form 中添加onsubmit =“return checkuser() ” 可总是提示找不到checkuser()函数,已经弄了几天了 我估计是框架的原因 可总是找不到解决方案



...全文
274 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2016-05-17
  • 打赏
  • 举报
回复
原来如此,没想到这个问题,谢谢 !
Go 旅城通票 2016-05-16
  • 打赏
  • 举报
回复
引用 5 楼 skyrain19782004 的回复:
问题现在已基本解决 adduser.jsp页面代码修改后的样子
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>adduser</title>
<script type="text/javascript"  src="script/checkusers.js"></script>
</head>
<body>
<form action="doadduser.jsp" method="post"  id="addform"   >
    <table  border="1">
    <tr>
    <td>项目名称</td>
     <td>添加内容</td>
     <td>信息提示</td>
    </tr>
    <tr>
     <td>用户名</td>
     <td><input  type="text"  name="username"   id="username"><br/><p id=pstruser></p></td>
     <td><p id="name-msg"></p></td>
    </tr>
    <tr>
      <td>密码</td>
     <td><input  type="password"  name="password"  id="password"><br/><p id=pstrpassword></p></td>
     <td><p id="password-msg"></p></td>
    </tr>
     <tr>
        <td>确认密码</td>
     <td><input  type="password"  name="checkpassword" id="confirmpassword" disabled></td>
     <td><p id="cpassword-msg"></p></td>
       </tr>
         <tr>
        <td> 所在部门</td>
     <td><select name="userbumen"  id="userbumen">  
     	      <option>大队部</option>
              <option>四中队</option>
              <option>五中队</option>
              <option>六中队</option>
             </select>
     </td>
     <td><p id="bumen-msg">选择所在部门</p></td>
    </tr>
       <tr>
        <td> 用户等级</td>
     <td><select   name="userdengji"   id="userdengji">
            <option>1</option>
            <option>2</option>
             <option>3</option>
     </select>
     </td>
     <td><p id="dengji-msg">选择用户等级</p></td>
    </tr>
           <tr>
        <td>备注</td>
     <td><input  type="text"  name="userbz"  id="userbz"><br/><p id=struserbz></p></td>
     <td><p id="beizhu-msg"></p></td>
    </tr>
     <tr>
        <td> 添加</td>
     <td><input  type="submit"  name="提交" id="btnaddusers"  ><input type="reset"  name="重置"></td>
     <td>错误提示</td>
    </tr>
    
    </table>

</form>
</body>
</html>
checkusers.js页面修改后 如下
function getlength(str)
{ return str.replace(/[^\x00-xff]/g,"xx").length 
//x00-xff 表示ascII码中的单字节字符 [^\x00-xff]表示取所有双字节字符,
//将所有双字节字符替换成2个字节的任意字符后再统计输入的字符串长度
}
window.onload=function()
{  
var addform=document.getElementById("addform");
//获取添加用户名form 元素
var btnsubmit=document.getElementById("btnaddusers");  
//获得提交按钮
var username=document.getElementById("username");
//获得用户名输入框
var password=document.getElementById("password");
//获得密码输入框
var conpassword=document.getElementById("confirmpassword");
//获得确认密码输入框
var beizhu=document.getElementById("userbz");

var pstruser=document.getElementById("pstruser");
//获得显示用户名输入框字符长度的p标签 
var pstrpassword=document.getElementById("pstrpassword");
var pstruserbz=document.getElementById("struserbz")
var strlength=0;//定义个字符串用于计算字符串的长度

//通过id方式获取元素后 需要同过元素的value属性才能获取相应的输入内容  比如:strusername=username.value

//以下是获取p标签  信息提示框元素
var pusernamemsg=document.getElementById("name-msg");
var ppasswordmsg=document.getElementById("password-msg");
var pconfirmpasswordmsg=document.getElementById("cpassword-msg");
var pbeizhumsg=document.getElementById("beizhu-msg");
   
/*关于frame框架中如何获取相应的元素弄了两天  总结Javascipt 获取相应框架中的元素应该一层一层的进入然后
*在获取元素   window.frames["top"].frames["right"].document.getElementById("username")
*先进入最外层的top 框架  再进入top中的right框架
*/
      
 //用户名要求 字母 数字 中文  长度为2到20个字符
 // \u4e00-\u9fa5这个unicode编码区间表示汉字
 // \x00-xff   在ascII码中的单字节字符 
 //  用户名输入框获得焦点 触发事件
      username.onfocus=function userfocus()
      {   pusernamemsg.style.display="block";
          pusernamemsg.innerHTML="请输入2到20个字符,一个中文为2个字符";
          
      }
    //用户名输入框失去焦点触发事件
    
function userblur()
   {//当用户名输入框失去输入焦点时验证输入字符合法性并显示提示
     //允许的字符包括a-z A-Z 0-9 以及中文字符 
     //正则表达式为/[\w\u4e00-\u9fa5]/g(全局匹配)
     	var re=/[^\w\u4e00-\u9fa5]/g   
     	if(re.test(username.value))
     	{   pusernamemsg.innerHTML="含有非法字符!";
     	    return false;
         }else if(username.value.length==0)
         {
         	pusernamemsg.innerHTML="用户名不能为空!";
         	return false;
         }
         else if(username.value.length>20)
         {
         	pusernamemsg.innerHTML="用户名长度不能超过20个字符!";
         	return false;
         }else if (username.value.length<2)
         {
         	pusernamemsg.innerHTML="用户名长度不能少于2个字符!";
         	return false;
         }else 
         {
         	pusernamemsg.innerHTML="用户名验证成功!";
         	return true;
         }
        
     	 }
    
    //用户名输入框在输入字符完成触发事件
    username.onkeyup=function userkeyup()
     {
      pstruser.style.display="block";
      strlength=getlength(this.value);
      pstruser.innerHTML=strlength+"个字符";
      if(strlength==0)
      {
      	pstruser.style.display="none";
      //	pstruser.style.visibility="hidden";
      }
      	
      }
    
    //密码输入要求 6到12个字符,密码不能用中文
    password.onfocus=function passwordfocus()
    {//当密码输入框获得输入焦点时显示p标签信息提示框
    	   ppasswordmsg.style.display="block";
    	   ppasswordmsg.innerHTML="请输入6-12个数字以及英文字符!";
    	   pconfirmpasswordmsg.style.display="block" ;
    	   pconfirmpasswordmsg.innerHTML="请再次输入密码!";
    }
    
    function passwordblur()
    {    var repassword=/[^\w]/g;//匹配数字与英文字符的正则表达式
    	   if(password.value.length==0)
    	{
    		ppasswordmsg.innerHTML="密码不能为空!";
    		return false;
    	} else if(password.value.length<6)
    	{
    		ppasswordmsg.innerHTML="密码不能小于6个字符!";
    		return false;
    	}
    		else if(password.value.length>12)
    		{
    			ppasswordmsg.innerHTML="密码不能大于12个字符!";
    			return false;
    			
    		} else if(repassword.test(password.value))
    		{
    			ppasswordmsg.innerHTML="密码有非法字符!";
    			conpassword.disabled="disabled";
    			return false;
    			
    		} else
    		{
    			ppasswordmsg.innerHTML="密码验证通过!";
    			return true;
    		}
    	}
    	
    
    password.onkeyup=function passwordkeyup()
    {  
    	if((this.value.length>=6)&&(this.value.length<=12))
    	 {
    	 	conpassword.disabled="";
    	} else 
    	{
    		conpassword.disabled="disabled";
    		
    		//当密码输入框的输入字符小于6个或者大于20个字符时将密码确认输入框设为不可用
    		//密码确认输入框的信息提示p标签页设置为不显示
    	}
      	pstrpassword.style.display="block";
       strlength=getlength(this.value);
      pstrpassword.innerHTML=strlength+"个字符";
    	
    }
    
  function confirmpasswordblur()
    {    
    	   if(password.value==conpassword.value)
    	   {
    	   //	 pconfirmpasswordmsg.style.display="block";
    	   	 pconfirmpasswordmsg.innerHTML="两次密码输入一致!";
    	   	 return true;
    	   } else
    	   {
    	   	//pconfirmpasswordmsg.style.display="block";
    	   	pconfirmpasswordmsg.innerHTML="两次密码输入不一致!";
    	   	return false;
    	   }
    }
    beizhu.onfocus=function  userbzfocus()
    {  pbeizhumsg.style.display="block";
       pbeizhumsg.innerHTML="备注信息不能超过50个字符!!!!";
    	
    }
    function userbzblur()
    {  if(beizhu.value.length>50)
     {   pbeizhumsg.style.display="block";
    		pbeizhumsg.innerHTML="备注信息超过50个字符,请删除多余备注信息!";
    		return false;
    	 }  
       else
    	 { 
    	 	return true;
    	 	
    	 }
    	
    }
   beizhu.onkeyup=function userbzkeyup()
    {  
	   strlength=getlength(this.value);
    pstruserbz.innerHTML=strlength+"个字符";
    	
    }
 btnsubmit.onclick=function checkonsubmit()
 {
   if((userblur()==false)||(passwordblur()==false)||(confirmpasswordblur()==false)||(userbzblur()==false))
     {  
     	 return false;
     } 
      else
    { 
    	return true;
    }
  } 

}
现在仍然有2个问题, 1、就是无论checkonsubmit() 函数是单独定义还是如上定义 form 的onsubmit =“return checkonsubmit()”都是提示函数未定义! 2、在html页面添加提交按钮的 onclick=“checkonsubmit()” 也提示函数未定义。给人感觉 是不是只能在js代码里面通过 submit.onclick=function checksubmit();才能让函数执行。
没注意一看,你的checksumit是内部函数,外部无法访问,将function userblur()这种全部放出window.onload事件外
「已注销」 2016-05-16
  • 打赏
  • 举报
回复
问题现在已基本解决 adduser.jsp页面代码修改后的样子
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>adduser</title>
<script type="text/javascript"  src="script/checkusers.js"></script>
</head>
<body>
<form action="doadduser.jsp" method="post"  id="addform"   >
    <table  border="1">
    <tr>
    <td>项目名称</td>
     <td>添加内容</td>
     <td>信息提示</td>
    </tr>
    <tr>
     <td>用户名</td>
     <td><input  type="text"  name="username"   id="username"><br/><p id=pstruser></p></td>
     <td><p id="name-msg"></p></td>
    </tr>
    <tr>
      <td>密码</td>
     <td><input  type="password"  name="password"  id="password"><br/><p id=pstrpassword></p></td>
     <td><p id="password-msg"></p></td>
    </tr>
     <tr>
        <td>确认密码</td>
     <td><input  type="password"  name="checkpassword" id="confirmpassword" disabled></td>
     <td><p id="cpassword-msg"></p></td>
       </tr>
         <tr>
        <td> 所在部门</td>
     <td><select name="userbumen"  id="userbumen">  
     	      <option>大队部</option>
              <option>四中队</option>
              <option>五中队</option>
              <option>六中队</option>
             </select>
     </td>
     <td><p id="bumen-msg">选择所在部门</p></td>
    </tr>
       <tr>
        <td> 用户等级</td>
     <td><select   name="userdengji"   id="userdengji">
            <option>1</option>
            <option>2</option>
             <option>3</option>
     </select>
     </td>
     <td><p id="dengji-msg">选择用户等级</p></td>
    </tr>
           <tr>
        <td>备注</td>
     <td><input  type="text"  name="userbz"  id="userbz"><br/><p id=struserbz></p></td>
     <td><p id="beizhu-msg"></p></td>
    </tr>
     <tr>
        <td> 添加</td>
     <td><input  type="submit"  name="提交" id="btnaddusers"  ><input type="reset"  name="重置"></td>
     <td>错误提示</td>
    </tr>
    
    </table>

</form>
</body>
</html>
checkusers.js页面修改后 如下
function getlength(str)
{ return str.replace(/[^\x00-xff]/g,"xx").length 
//x00-xff 表示ascII码中的单字节字符 [^\x00-xff]表示取所有双字节字符,
//将所有双字节字符替换成2个字节的任意字符后再统计输入的字符串长度
}
window.onload=function()
{  
var addform=document.getElementById("addform");
//获取添加用户名form 元素
var btnsubmit=document.getElementById("btnaddusers");  
//获得提交按钮
var username=document.getElementById("username");
//获得用户名输入框
var password=document.getElementById("password");
//获得密码输入框
var conpassword=document.getElementById("confirmpassword");
//获得确认密码输入框
var beizhu=document.getElementById("userbz");

var pstruser=document.getElementById("pstruser");
//获得显示用户名输入框字符长度的p标签 
var pstrpassword=document.getElementById("pstrpassword");
var pstruserbz=document.getElementById("struserbz")
var strlength=0;//定义个字符串用于计算字符串的长度

//通过id方式获取元素后 需要同过元素的value属性才能获取相应的输入内容  比如:strusername=username.value

//以下是获取p标签  信息提示框元素
var pusernamemsg=document.getElementById("name-msg");
var ppasswordmsg=document.getElementById("password-msg");
var pconfirmpasswordmsg=document.getElementById("cpassword-msg");
var pbeizhumsg=document.getElementById("beizhu-msg");
   
/*关于frame框架中如何获取相应的元素弄了两天  总结Javascipt 获取相应框架中的元素应该一层一层的进入然后
*在获取元素   window.frames["top"].frames["right"].document.getElementById("username")
*先进入最外层的top 框架  再进入top中的right框架
*/
      
 //用户名要求 字母 数字 中文  长度为2到20个字符
 // \u4e00-\u9fa5这个unicode编码区间表示汉字
 // \x00-xff   在ascII码中的单字节字符 
 //  用户名输入框获得焦点 触发事件
      username.onfocus=function userfocus()
      {   pusernamemsg.style.display="block";
          pusernamemsg.innerHTML="请输入2到20个字符,一个中文为2个字符";
          
      }
    //用户名输入框失去焦点触发事件
    
function userblur()
   {//当用户名输入框失去输入焦点时验证输入字符合法性并显示提示
     //允许的字符包括a-z A-Z 0-9 以及中文字符 
     //正则表达式为/[\w\u4e00-\u9fa5]/g(全局匹配)
     	var re=/[^\w\u4e00-\u9fa5]/g   
     	if(re.test(username.value))
     	{   pusernamemsg.innerHTML="含有非法字符!";
     	    return false;
         }else if(username.value.length==0)
         {
         	pusernamemsg.innerHTML="用户名不能为空!";
         	return false;
         }
         else if(username.value.length>20)
         {
         	pusernamemsg.innerHTML="用户名长度不能超过20个字符!";
         	return false;
         }else if (username.value.length<2)
         {
         	pusernamemsg.innerHTML="用户名长度不能少于2个字符!";
         	return false;
         }else 
         {
         	pusernamemsg.innerHTML="用户名验证成功!";
         	return true;
         }
        
     	 }
    
    //用户名输入框在输入字符完成触发事件
    username.onkeyup=function userkeyup()
     {
      pstruser.style.display="block";
      strlength=getlength(this.value);
      pstruser.innerHTML=strlength+"个字符";
      if(strlength==0)
      {
      	pstruser.style.display="none";
      //	pstruser.style.visibility="hidden";
      }
      	
      }
    
    //密码输入要求 6到12个字符,密码不能用中文
    password.onfocus=function passwordfocus()
    {//当密码输入框获得输入焦点时显示p标签信息提示框
    	   ppasswordmsg.style.display="block";
    	   ppasswordmsg.innerHTML="请输入6-12个数字以及英文字符!";
    	   pconfirmpasswordmsg.style.display="block" ;
    	   pconfirmpasswordmsg.innerHTML="请再次输入密码!";
    }
    
    function passwordblur()
    {    var repassword=/[^\w]/g;//匹配数字与英文字符的正则表达式
    	   if(password.value.length==0)
    	{
    		ppasswordmsg.innerHTML="密码不能为空!";
    		return false;
    	} else if(password.value.length<6)
    	{
    		ppasswordmsg.innerHTML="密码不能小于6个字符!";
    		return false;
    	}
    		else if(password.value.length>12)
    		{
    			ppasswordmsg.innerHTML="密码不能大于12个字符!";
    			return false;
    			
    		} else if(repassword.test(password.value))
    		{
    			ppasswordmsg.innerHTML="密码有非法字符!";
    			conpassword.disabled="disabled";
    			return false;
    			
    		} else
    		{
    			ppasswordmsg.innerHTML="密码验证通过!";
    			return true;
    		}
    	}
    	
    
    password.onkeyup=function passwordkeyup()
    {  
    	if((this.value.length>=6)&&(this.value.length<=12))
    	 {
    	 	conpassword.disabled="";
    	} else 
    	{
    		conpassword.disabled="disabled";
    		
    		//当密码输入框的输入字符小于6个或者大于20个字符时将密码确认输入框设为不可用
    		//密码确认输入框的信息提示p标签页设置为不显示
    	}
      	pstrpassword.style.display="block";
       strlength=getlength(this.value);
      pstrpassword.innerHTML=strlength+"个字符";
    	
    }
    
  function confirmpasswordblur()
    {    
    	   if(password.value==conpassword.value)
    	   {
    	   //	 pconfirmpasswordmsg.style.display="block";
    	   	 pconfirmpasswordmsg.innerHTML="两次密码输入一致!";
    	   	 return true;
    	   } else
    	   {
    	   	//pconfirmpasswordmsg.style.display="block";
    	   	pconfirmpasswordmsg.innerHTML="两次密码输入不一致!";
    	   	return false;
    	   }
    }
    beizhu.onfocus=function  userbzfocus()
    {  pbeizhumsg.style.display="block";
       pbeizhumsg.innerHTML="备注信息不能超过50个字符!!!!";
    	
    }
    function userbzblur()
    {  if(beizhu.value.length>50)
     {   pbeizhumsg.style.display="block";
    		pbeizhumsg.innerHTML="备注信息超过50个字符,请删除多余备注信息!";
    		return false;
    	 }  
       else
    	 { 
    	 	return true;
    	 	
    	 }
    	
    }
   beizhu.onkeyup=function userbzkeyup()
    {  
	   strlength=getlength(this.value);
    pstruserbz.innerHTML=strlength+"个字符";
    	
    }
 btnsubmit.onclick=function checkonsubmit()
 {
   if((userblur()==false)||(passwordblur()==false)||(confirmpasswordblur()==false)||(userbzblur()==false))
     {  
     	 return false;
     } 
      else
    { 
    	return true;
    }
  } 

}
现在仍然有2个问题, 1、就是无论checkonsubmit() 函数是单独定义还是如上定义 form 的onsubmit =“return checkonsubmit()”都是提示函数未定义! 2、在html页面添加提交按钮的 onclick=“checkonsubmit()” 也提示函数未定义。给人感觉 是不是只能在js代码里面通过 submit.onclick=function checksubmit();才能让函数执行。
Go 旅城通票 2016-05-16
  • 打赏
  • 举报
回复
1) var addform=window.frames["top"].frames["right"].document.getElementById("addform"); 你的js和页面在一起,还搞那么多获取框架的操作干嘛。。,你又不是取其他框架的控件,直接下面的就行了,其他的也一样 var addform=document.getElementById("addform"); 2) btnsubmit.onclick=function checkuser()这样定义肯定是没有checkuser函数的,要单独定义 function checkuser()。。。。。。。。 btnsubmit.onclick=checkuser; 3)去掉checkuser内部的函数名称userblur1,要不就是空函数,根本没执行代码
    function checkuser() {
       ///////////////////////////// function userblur1() {//当用户名输入框失去输入焦点时验证输入字符合法性并显示提示
            //允许的字符包括a-z A-Z 0-9 以及中文字符 
            //正则表达式为/[\w\u4e00-\u9fa5]/g(全局匹配)
            var re = /[^\w\u4e00-\u9fa5]/g
            if (re.test(username.value)) {
                pusernamemsg.innerHTML = "含有非法字符!";
                return false;
            } else if (username.value.length == 0) {
                pusernamemsg.innerHTML = "用户名不能为空!";
                return false;
            }
            else if (username.value.length > 20) {
                pusernamemsg.innerHTML = "用户名长度不能超过20个字符!";
                return false;
            } else if (username.value.length < 2) {
                pusernamemsg.innerHTML = "用户名长度不能少于2个字符!";
                return false;
            } else {
                pusernamemsg.innerHTML = "用户名验证成功!";
                return true;
            }
      //////////////////////  }
    }
「已注销」 2016-05-16
  • 打赏
  • 举报
回复

这分别是safari 和 qq 浏览器mac版的调试信息
cheery_an 2016-05-16
  • 打赏
  • 举报
回复
你没有定义function checkuser(){},而是定义的 btnsubmit.onclick=function checkuser(){}。 这样你单击按钮的时候,就应该执行检查了吧。
「已注销」 2016-05-16
  • 打赏
  • 举报
回复
我就是单独定义function checkuser() 也不行 我试验过。仍然提示函数未定义,如果不在框架下面就是正常的,应该还是onsubmit=“” 的写法问题,加了框架 不知道怎么写这块 。
第1章 JavaScript简介 1 1.1 JavaScript是什么 1 1.2 JavaScript不是什么 2 1.3 JavaScript的用处 3 1.4 JavaScript及其在Web页面的位置 3 1.5 Ajax是什么 5 1.6 JavaScript是什么样子的 6 1.7 JavaScript及其在Web开发承担的角色 7 1.8 JavaScript和事件 9 1.9 标准化JavaScript和W3C 11 1.9.1 JavaScript对象 12 1.9.2 文档对象模型 12 1.10 关于浏览器 13 1.10.1 JavaScript的版本 14 1.10.2 你的浏览器遵循标准吗 16 1.10.3 浏览器是否已启用JavaScript 16 1.11 JavaScript代码放在哪儿 17 1.12 验证标签 20 1.12.1 W3C验证工具 21 1.12.2 Validome验证工具 21 1.13 应知应会 22 练习 23 第2章 脚本的安装 24 2.1 HTML文档与JavaScript 24 2.2 语法细节 27 2.2.1 区分大小写问题 27 2.2.2 自由形式及保留字 27 2.2.3 语句及分号 28 2.2.4 注释 28 ... 2.2.5 〈script〉标签    2.3 生成HTML 并输出显示    2.3.1 字符串及字符串串联    2.3.2 write()及writeln()方法    2.4 关于调试    2.5 调试工具    2.5.1 Firefox    2.5.2 在Internet Explorer 8调试    2.5.3 [removed]URL 协议    2.6 JavaScript与旧浏览器或受限的浏览器    2.7 应知应会    练习    第3章 数据类型、字面量和变量    3.1 数据类型    3.1.1 基本数据类型    3.1.2 复合数据类型    3.2 变量    3.2.1 有效变量名    3.2.2 声明和初始化变量    3.2.3 动态或宽松类型语言    3.2.4 变量作用域    3.2.5 变量的拼接    3.3 常量    3.4 要注意的bug    3.5 应知应会    练习    第4章 对话框    4.1 与用户交互    4.1.1 alert()方法    4.1.2 prompt()方法    4.1.3 confirm()方法    4.2 应知应会    练习    第5章 运算符    5.1 JavaScript运算符和表达式    5.1.1 赋值运算符    5.1.2 优先级和结合性    5.2 运算符类型    5.2.1 算术运算符    5.2.2 快捷赋值运算符    5.2.3 递增运算符和递减运算符    5.2.4 拼接运算符    5.2.5 比较运算符    5.2.6 逻辑运算符    5.2.7 条件运算符    5.2.8 位运算符    5.3 数字、字符串还是布尔值?数据类型转换    5.3.1 parseInt()函数    5.3.2 parseFloat()函数    5.3.3 eval()函数    5.4 特殊运算符    5.5 应知应会    练习    第6章 条件选择    6.1 控制结构、块及复合语句    6.2 条件    6.2.1 if/else    6.2.2 if/else if    6.2.3 switch    6.3 循环    6.3.1 while循环    6.3.2 do/while循环    6.3.3 for循环    6.3.4 for/in循环    6.3.5 使用break和continue控制循环    6.3.6 嵌套循环及标签    6.4 应知应会    练习    第7章 函数    7.1 什么是函数    7.1.1 函数声明和调用    7.1.2 返回值    7.1.3 匿名函数变量    7.1.4 闭包    7.1.5 递归    7.1.6 函数是对象    7.2 调试技巧    7.2.1 函数语法    7.2.2 使用try/catch和throw捕捉异常    7.3 应知应会    练习    第8章 对象    8.1 什么是对象    8.1.1 对象及点语法    8.1.2 使用构造函数创建对象    8.1.3 对象的属性    8.1.4 对象的方法    8.2 类和用户自定义函数    8.2.1 什么是类    8.2.2 什么是this   
源文件程序天下JAVASCRIPT实例自学手册 第1章 JavaScript语言概述 1.1 JavaScript是什么 1.1.1 JavaScript简史 1.1.2 JavaScript有何特点 1.2 JavaScript能做什么 1.2.1 表单数据合法性验证 1.2.2 页面特效 1.2.3 交互式菜单 1.2.4 动态页面 1.2.5 数值计算 1.3 JavaScript编程起步 1.3.1 “Hello World!”程序 1.3.2 选择JavaScript脚本编辑器 1.4 如何引入JavaScript脚本代码 1.4.1 通过[removed]与[removed]标记对引入 1.4.2 通过[removed]标记的src属性引入 1.4.3 通过JavaScript伪URL引入 1.4.4 通过HTML文档事件处理程序引入 1.5 嵌入JavaScript脚本代码的位置 1.5.1 在<head>与</head>标记对之间放置 1.5.2 在<body>与</body>标记对之间放置 1.5.3 在两个标记对之间混合放置 1.6 选择合适的浏览器 1.7 处理不支持JavaScript脚本的情况 1.7.1 使用<!--和-->标记对直接屏蔽法 1.7.2 使用JavaScript的实现基础 1.8.1 ECMAScript 1.8.2 DOM 1.8.3 BOM 1.9 客户端与服务器端脚本 1.10 JavaScript与JScript、 VBScript 1.11 JavaScript与Java、Java applet 1.12 JavaScript的未来如何 1.13 本章小结 第2章 JavaScript语言入门 2.1 编程准备 2.1.1 编程术语 2.1.2 脚本执行顺序 2.1.3 大小写敏感 2.1.4 空白字符 2.1.5 分号 2.1.6 块 2.2 数值类型 2.2.1 整型和浮点数值 2.2.2 八进制和十六进制 2.3 变量 2.3.1 变量标识符 2.3.2 变量申明 2.3.3 变量作用域 2.4 弱类型 2.5 基本数据类型 2.5.1 Number型 2.5.2 String型 2.5.3 Boolean型 2.5.4 Undefined型 2.5.5 Null型 2.5.6 Function型 2.6 组合类型 2.6.1 Array型 2.6.2 Object型 2.7 运算符 2.7.1 赋值运算符 2.7.2 基本数学运算符 2.7.3 位运算符 2.7.4 位移运算符 2.7.5 自加和自减 2.7.6 比较运算符 2.7.7 逻辑运算符 2.7.8 逗号运算符 2.7.9 空运算符 2.7.10 ?...:运算符 2.7.11 对象运算符 2.7.12 typeof运算符 2.7.13 运算符优先级 2.8 核心语句 2.8.1 基本处理流程 2.8.2 if条件假设语句 2.8.3 switch流程控制语句 2.8.4 for循环语句 2.8.5 while和do-while循环语句 2.8.6 使用break和continue进行循坏控制 2.8.7 with对象操作语句 2.8.8 使用for…in进行对象循坏 2.8.9 含标签的语句 2.9 函数 2.9.1 函数的基本组成 2.9.2 全局函数与局部函数 2.9.3 作为对象的函数 2.9.4 函数递归调用 2.9.5 语言注释语句 2.9.6 函数应用注意事项 2.10 本章小结 第3章 JavaScript事件处理 3.1 什么是事件 3.2 HTML文档事件 3.2.1 事件捆绑 3.2.2 浏览器事件 3.2.3 HTML元素事件 3.2.4 IE扩展的事件 3.3 JavaScript如何处理事件 3.3.1 匿名函数 3.3.2 显式声明 3.3.3 手工触发 3.4 事件处理器的返回值 3.5 事件处理器设置的灵活性 3.6 现代事件模型与Event对象 3.7 IE4的Event对象 3.7.1 对象属性 3.7.2 事件上溯 3.7.3 阻止事件上溯 3.7.4 事件改向 3.8 NN4的Event对象 3.8.1 对象属性 3.8.2 事件捕获 3.8.3 关闭事件捕获 3.8.4 事件传递 3.9 DOM的解决之道 3.9.1 事件流方向 3.9.2 Event对象 3.9.3 事件类型 3.10 本章小结 第4章 JavaScript基于对象编程 4.1 面向对象编程与基于对象编程 4.1.1 什么是对象 4.1.2 面向对象编程 4.1.3 面向对象编程:继承 4.1.4 面向对象编程:封装 4.1.5 面向对象编程:多态 4.1.6 基于对象编程 4.2 JavaScript对象的生成 4.2.1 HTML文档结构 4.2.2 DOM框架 4.2.3 顶级对象之间的关系 4.2.4 浏览器载入文档时对象的生成 4.3 JavaScript核心对象 4.4 文档对象的引用 4.4.1 通过对象位置访问文档对象 4.4.2 通过name属性访问文档对象 4.4.3 通过id属性访问文档对象 4.4.4 通过联合数组访问文档对象 4.5 创建和使用自定义对象 4.5.1 通过定义对象的构造函数的方法 4.5.2 通过对象直接初始化的方法 4.5.3 修改、删除对象实例的属性 4.5.4 通过原型为对象添加新属性和新方法 4.5.5 自定义对象的嵌套 4.5.6 内存的分配和释放 4.6 本章小结 第5章 文档对象模型(DOM) 5.1 DOM概述 5.1.1 基本对象模型 5.1.2 Netscape Navigator浏览器扩展 5.1.3 Internet Explorer浏览器扩展 5.1.4 Opera、Mozilla和其他浏览器扩展 5.1.5 W3C DOM 5.1.6 W3C DOM规范级别 5.2 文档对象模型的层次 5.3 文档对象的产生过程 5.4 对象的属性和方法 5.4.1 何谓节点 5.4.2 元素节点(element node) 5.4.3 文本节点(text node) 5.4.4 属性节点(attribute node) 5.4.5 对象属性 5.4.6 id属性和class属性 5.4.7 通过id属性返回指定对象 5.4.8 通过元素标签返回指定对象 5.4.9 通过name属性返回指定对象 5.4.10 获取特定属性的取值 5.4.11 设置特定属性的取值 5.4.12 删除特定的属性 5.5 附加的节点处理方法 5.5.1 生成节点 5.5.2 插入和添加节点 5.5.3 复制节点 5.5.4 删除和替换节点 5.5.5 文本节点操作 5.6 对象的事件处理程序 5.7 浏览器兼容性策略 5.8 本章小结 第6章 String、Math、Array等数据对象 6.1 String对象 6.1.1 如何使用String对象方法操作字符串 6.1.2 获取目标字符串长度 6.1.3 连接两个字符串 6.1.4 验证电子邮件地址的合法性 6.1.5 返回指定位置的字符串 6.1.6 在URL定位字符串 6.1.7 分隔字符串 6.1.8 将字符串标记为HTML语句 6.1.9 常见属性和方法汇总 6.2 Math对象 6.2.1 基本数学运算 6.2.2 任意范围随机数发生器 6.2.3 访问其基本属性 6.2.4 使用with声明简化表达式 6.2.5 常见属性汇总 6.2.6 常见方法汇总 6.3 Array对象 6.3.1 创建数组并访问其特定位置元素 6.3.2 数组元素的顺序问题 6.3.3 模拟堆栈和队列操作的方法 6.3.4 使用splice()方法添加和删除数组元素 6.3.5 修改length属性更改数组 6.3.6 调用Array对象的方法生成字符串 6.3.7 连接两个数组 6.3.8 常见属性和方法汇总 6.4 Date对象 6.4.1 生成日期对象的实例 6.4.2 如何提取日期各字段 6.4.3 如何设置日期各字段 6.4.4 将日期转化为字符串 6.5 Number对象 6.5.1 创建Number对象的实例 6.5.2 将Number对象转化为字符串 6.5.3 通过原型属性为对象添加属性和方法 6.5.4 常见属性和方法汇总 6.6 Boolean对象 6.6.1 创建Boolean对象的实例 6.6.2 将Boolean对象转化为字符串 6.6.3 常见属性和方法汇总 6.7 Function对象 6.7.1 两个概念:Function与function 6.7.2 使用Function对象构造函数 6.7.3 常见属性和方法汇总 6.8 Object对象 6.8.1 创建Object对象的实例 6.8.2 常见属性和方法列表 6.9 本章小结 第7章 Window及相关顶级对象 7.1 顶级对象模型参考 7.2 Window对象 7.2.1 警告框 7.2.2 确认框 7.2.3 提示框 7.2.4 实例:学生信息采集系统 7.2.5 设定时间间隔 7.2.6 事件超时控制 7.2.7 创建和管理新窗口 7.2.8 常见属性和方法汇总 7.3 Navigator对象 7.3.1 获取浏览器信息 7.3.2 常见方法和属性汇总 7.4 Screen对象 7.4.1 获取客户端屏幕信息 7.4.2 定位窗口到指定位置 7.4.3 常见属性和方法汇总 7.5 History对象 7.5.1 使用back()和forward()方法进行站点导航 7.5.2 使用go()方法进行站点导航 7.5.3 常见属性和方法汇总 7.6 Location对象 7.6.1 统一资源定位器(URL) 7.6.2 Location对象属性与URL的对应 7.6.3 使用reload()方法重载页面 7.7 Frame对象 7.7.1 框架集文档对象的结构 7.7.2 控制指定的框架 7.7.3 常见属性和方法汇总 7.7.4 Frameset对象 7.7.5 iframe元素对象 7.8 Document对象 7.9 本章小结 第8章 Document对象 8.1 对象模型参考 8.2 Document对象 8.2.1 获取目标文档信息 8.2.2 设置文档颜色值 8.2.3 往文档写入新内容 8.2.4 常见属性和方法汇总 8.3 body元素对象 8.3.1 获取body元素对象信息 8.3.2 常见属性和方法汇总 8.4 本章小结
JavaScript电子书,包括了JavaScript的大部分知识,可以帮助读者快速入门。内容如下: 第1章 JavaScript语言概述 1.1 JavaScript是什么 1.1.1 JavaScript简史 1.1.2 JavaScript有何特点 1.2 JavaScript能做什么 1.2.1 表单数据合法性验证 1.2.2 页面特效 1.2.3 交互式菜单 1.2.4 动态页面 1.2.5 数值计算 1.3 JavaScript编程起步 1.3.1 “Hello World!”程序 1.3.2 选择JavaScript脚本编辑器 1.4 如何引入JavaScript脚本代码 1.4.1 通过与标记对引入 1.4.2 通过标记的src属性引入 1.4.3 通过JavaScript伪URL引入 1.4.4 通过HTML文档事件处理程序引入 1.5 嵌入JavaScript脚本代码的位置 1.5.1 在与标记对之间放置 1.5.2 在与标记对之间放置 1.5.3 在两个标记对之间混合放置 1.6 选择合适的浏览器 1.7 处理不支持JavaScript脚本的情况 1.7.1 使用标记对直接屏蔽法 1.7.2 使用和标记对给出提示信息 1.8 JavaScript的实现基础 1.8.1 ECMAScript 1.8.2 DOM 1.8.3 BOM 1.9 客户端与服务器端脚本 1.10 JavaScript与JScript、 VBScript 1.11 JavaScript与Java、Java applet 1.12 JavaScript的未来如何 1.13 本章小结 第2章 JavaScript语言入门 2.1 编程准备 2.1.1 编程术语 2.1.2 脚本执行顺序 2.1.3 大小写敏感 2.1.4 空白字符 2.1.5 分号 2.1.6 块 2.2 数值类型 2.2.1 整型和浮点数值 2.2.2 八进制和十六进制 2.3 变量 2.3.1 变量标识符 2.3.2 变量申明 2.3.3 变量作用域 2.4 弱类型 2.5 基本数据类型 2.5.1 Number型 2.5.2 String型 2.5.3 Boolean型 2.5.4 Undefined型 2.5.5 Null型 2.5.6 Function型 2.6 组合类型 2.6.1 Array型 2.6.2 Object型 2.7 运算符 2.7.1 赋值运算符 2.7.2 基本数学运算符 2.7.3 位运算符 2.7.4 位移运算符 2.7.5 自加和自减 2.7.6 比较运算符 2.7.7 逻辑运算符 2.7.8 逗号运算符 2.7.9 空运算符 2.7.10 ?...:运算符 2.7.11 对象运算符 2.7.12 typeof运算符 2.7.13 运算符优先级 2.8 核心语句 2.8.1 基本处理流程 2.8.2 if条件假设语句 2.8.3 switch流程控制语句 2.8.4 for循环语句 2.8.5 while和do-while循环语句 2.8.6 使用break和continue进行循坏控制 2.8.7 with对象操作语句 2.8.8 使用for…in进行对象循坏 2.8.9 含标签的语句 2.9 函数 2.9.1 函数的基本组成 2.9.2 全局函数与局部函数 2.9.3 作为对象的函数 2.9.4 函数递归调用 2.9.5 语言注释语句 2.9.6 函数应用注意事项 2.10 本章小结 第3章 JavaScript事件处理 3.1 什么是事件 3.2 HTML文档事件 3.2.1 事件捆绑 3.2.2 浏览器事件 3.2.3 HTML元素事件 3.2.4 IE扩展的事件 3.3 JavaScript如何处理事件 3.3.1 匿名函数 3.3.2 显式声明 3.3.3 手工触发 3.4 事件处理器的返回值 3.5 事件处理器设置的灵活性 3.6 现代事件模型与Event对象 3.7 IE4的Event对象 3.7.1 对象属性 3.7.2 事件上溯 3.7.3 阻止事件上溯 3.7.4 事件改向 3.8 NN4的Event对象 3.8.1 对象属性 3.8.2 事件捕获 3.8.3 关闭事件捕获 3.8.4 事件传递 3.9 DOM的解决之道

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧