??xml version="1.0" encoding="utf-8" standalone="yes"?>
以下面写p为有用的操作和代码?br />
W一ơ在园里面写Q肯定有很多不够之处,希望大家多多指点?br />
一、Iframe ?br />
//&&&&&&&&&&&&&&&&&&&&公共Ҏ开?amp;&&&&&&&&&&&&&&
//父对象得到子H口的?/span>
//ObjectID是窗口标识,ContentID是元素ID
function GetValue(ObjectID,ContentID)
{
var IsIE = (navigator.appName == 'Microsoft Internet Explorer')
if(IsIE)
{//如果是IE
alert(document.frames(ObjectID).document.getElementById(ContentID).innerHTML);
}
else
{//如果是FF
alert(document.getElementById(ObjectID).contentDocument.getElementById(ContentID).innerHTML);
//FF下不支持innerText; 下面是解x?nbsp;
//if(document.all){
// alert(document.getElementById('div1').innerText);
//} else{
// alert(document.getElementById('div1').textContent);
//}
}
}
//父对象向子窗口赋?/span>
//ObjectID是窗口标识,ContentID是元素ID
function SetValue(ObjectID,ContentID)
{
var IsIE = (navigator.appName == 'Microsoft Internet Explorer')
if(IsIE)
{//如果是IE
document.frames(ObjectID).document.getElementById(ContentID).innerHTML="我是IE下通过父窗口赋D来的";
}
else
{//如果是FF
document.getElementById(ObjectID).contentDocument.getElementById(ContentID).innerHTML="我是FF下通过父窗口赋D来的";
}
}
//&&&&&&&&&&&&&&&&&&&&公共Ҏl束&&&&&&&&&&&&&&&
1.父窗口对子窗口操?br />
hQ?br />
document.getElementById("IframeID").src=document.getElementById("IframeID").src+"?_="+Math.random();
上面q种Ҏ有时需要对“src”属性处理一下?br />
取|
//父窗口取子窗口的?/span>
GetValue("Iframe1","IframeDiv");
赋|
//父窗口设|窗口元素的?
SetValue("Iframe1","IframeDiv");
2.子窗口操作父H口
hQ?br />
(1)、window.parent.location.href=window.parent.location.href;
(2)、window.parent.location.reload();
(3)、大家可以补?br />
取|
alert(window.parent.document.getElementById("IframeDiv").innerHTML);
赋|
window.parent.document.getElementById("IframeDiv").innerHTML="我是从子H口IFRAME传过来的?/span>";
关闭Q?br />
window.parent.opener=null;//如果不加q句Q会提示关闭询问H口;
window.parent.close();
二、window.open ?br />
1.父窗口对子窗口操?br />
打开Q?br />
var win=null;
win=window.open("Open.html","win","width=200,height=200");
最大化Q?br />
//H口最大化
function SonMaximize()
{
if(win&&win.open&&!win.closed)
{
win.moveTo(-4,-4);
win.resizeTo(screen.availWidth+8,screen.availHeight+8);
}else{
alert('q没有打开H口或已l关?);
}
}
最化Q?br />
//H口最化
function SonMinimize()
{
if(win&&win.open&&!win.closed)
{
win.resizeTo(0,0);
win.moveTo(0,window.screen.width);
}else{
alert('q没有打开H口或已l关?);
}
}
关闭Q?br />
//关闭H口
function CloseSon()
{
if(win&&win.open&&!win.closed)
{
win.opener=null;
win.close()
}else{
alert('q没有打开H口或已关闭') ;
}
}
hQ?br />
//h
function RefreshSon()
{
if(win&&win.open&&!win.closed)
{
win.location.reload();
win.focus();
}else{
alert('H口q没有打开或已关闭');
}
}
查看H口大小Q?br />
function ViewSonSize()
{
if(win&&win.open&&!win.closed)
{
alert(win.document.body.clientWidth+'*'+win.document.body.clientHeight);
win.focus();
}else
{
alert(' q没有打开H口或者已关闭');
}
}
取|
alert(window.document.getElementById("OpenDiv").innerHTML);
赋|
win.document.getElementById("OpenDiv").innerHTML="我是从父H口中传q来的?/span>";
2.子窗口操作窗?br />
hQ?br />
window.opener.location.reload();
//下面q种Ҏ也可?/span>
//window.parent.location.href=window.parent.location.href;
关闭本窗口:
//关闭本窗?/span>
function CloseWindow()
{ //window.opener.opener=null;
window.close();
}
关闭父窗?
//关闭父窗?/span>
function CloseParent()
{ //火狐下不起作?如果要想起作用。用下面的方?/span>
//开firefox,在地址栏输入about:config
//扑ֈdom.allow_scripts_to_close_windowsq项q改为true
var IsIE = (navigator.appName == 'Microsoft Internet Explorer')
if(IsIE){//如果是IE
window.opener.opener=null;
window.opener.close();
window.close();
}else{
alert("火狐不能直接关闭;需要以下设|?.开firefox,在地址栏输入about:config;2.扑ֈdom.allow_scripts_to_close_windowsq项q改为true");
}
}
取|
alert(window.opener.document.getElementById("OpenDiv").innerHTML);
赋|
window.opener.document.getElementById("OpenDiv").innerHTML="我是从子H口Open传过来的?/span>";
三、模态窗口篇
1.父窗口操作子H口
父窗口JS代码Q?br />
var parValue="现在昄了父H口中的变量?/span>";
var hao="郝徏?/span>";
function ShowDailog(PageHref,Title,Height,Width)
{
//--------------left位置
//screen.availHeight声明了显C浏览器的屏q的可用宽度
var dleft =(screen.availHeight-Height)/2;
//--------------top位置
var dtop =(screen.availWidth-Width)/2;
//---------------
Var sRet = window.showModalDialog(PageHref,window,Title,"scrollbars=yes;resizable=no;help=no;status=no;center=yes;dialogTop=25;dialogLeft="+ dleft +";dialogTop="+ dtop +";dialogHeight="+Height+"px;dialogWidth="+Width+"px;");
//--------return
if (sRet =="refresh")//q种是利用返回值来h爉?/span>
{
window.Test="true";
window.location.reload();
alert(window.Test);
}
}
function test()
{
alert("模态窗口成功调用父H口的方?/span>");
}
2.模态窗口操作父H口
var parentWin=window.dialogArguments;
hQ?br />
parentWin.location.reload();
取|
alert(parentWin.document.getElementById("ShowModalDialogDiv").innerHTML) //获取父窗口中的对?/span>
alert("我是从父H口中得到的变量>>>"+parentWin.parValue); //获取父窗口中的变?/span>
调用父窗口JSҎQ?br />
parentWin.test(); //调用父窗口中的方?/span>
赋|
parentWin.document.getElementById("ShowModalDialogDiv").innerHTML="我是从子H口ShowModalDialog传过来的?/span>";
关闭本窗口:
//关闭本窗?/span>
function CloseWindow()
{
window.parent.close();
}
关闭父窗口:
//关闭父窗?/span>
function CloseModal()
{
var IsIE = (navigator.appName == 'Microsoft Internet Explorer')
if(IsIE){//如果是IE
window.parent.parent.close();
//parentWin.opener=null;如果把上面的换成q行Q不能关闭父H口Q?/span>
parentWin.close();
//window.parent.parent.parent.parent.close();q个只能关闭模态窗口本w目前只在IE6下测?/span>
}else{
alert("火狐不能直接关闭;需要以下设|?.开firefox,在地址栏输入about:config;2.扑ֈdom.allow_scripts_to_close_windowsq项q改为true");
}
}
JavaScript父窗口与子窗口相互操?rar
]]>
var ImgObj=new Image(); //建立一个图像对?/span>
var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部囄格式cd
var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg//全局变量 囄相关属?/span>
//以下为限制变?/span>
var AllowExt=".jpg|.gif|.doc|.txt|" //允许上传的文件类?nbsp;?为无限制 每个扩展名后边要加一?|" 写字母表示
//var AllowExt=0
var AllowImgFileSize=70; //允许上传囄文g的大?nbsp;0为无限制 单位QKB
var AllowImgWidth=500; //允许上传的图片的宽度 ?为无限制 单位Qpx(像素)
var AllowImgHeight=500; //允许上传的图片的高度 ?为无限制 单位Qpx(像素)
HasChecked=false;
function CheckProperty(obj) //图像属?/span>
{
FileObj=obj;
if(ErrMsg!="") //是否ؓ正确的图像文件 q回出错信息q|?/span>
{
ShowMsg(ErrMsg,false);
return false; //q回
}
if(ImgObj.readyState!="complete") //如果囑փ是未加蝲完成q行循环?/span>
{
setTimeout("CheckProperty(FileObj)",500);
return false;
}
ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得囄文g的大?/span>
ImgWidth=ImgObj.width //取得囄的宽?/span>
ImgHeight=ImgObj.height; //取得囄的高?/span>
FileMsg="\n囄大小:"+ImgWidth+"*"+ImgHeight+"px";
FileMsg=FileMsg+"\n囄文g大小:"+ImgFileSize+"Kb";
FileMsg=FileMsg+"\n囄文g扩展?"+FileExt;
if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth)
ErrMsg=ErrMsg+"\n囄宽度过限制。请上传宽度于"+AllowImgWidth+"px的文Ӟ当前囄宽度?/span>"+ImgWidth+"px";
if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight)
ErrMsg=ErrMsg+"\n囄高度过限制。请上传高度于"+AllowImgHeight+"px的文Ӟ当前囄高度?/span>"+ImgHeight+"px";
if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize)
ErrMsg=ErrMsg+"\n囄文g大小过限制。请上传于"+AllowImgFileSize+"KB的文Ӟ当前文g大小?/span>"+ImgFileSize+"KB";
if(ErrMsg!="")
ShowMsg(ErrMsg,false);
else
ShowMsg(FileMsg,true);
}
ImgObj.onerror=function(){ErrMsg='\n囄格式不正或者图片已损坏!'}
function ShowMsg(msg,tf) //昄提示信息 tf=true 昄文g信息 tf=false 昄错误信息 msg-信息内容
{
msg=msg.replace("\n","<li>");
msg=msg.replace(/\n/gi,"<li>");
if(!tf)
{
document.all.UploadButton.disabled=true;
FileObj.outerHTML=FileObj.outerHTML;
MsgList.innerHTML=msg;
HasChecked=false;
}
else
{
document.all.UploadButton.disabled=false;
if(IsImg)
PreviewImg.innerHTML="<img src='"+ImgObj.src+"' width='60' height='60'>"
else
PreviewImg.innerHTML="非图片文?/span>";
MsgList.innerHTML=msg;
HasChecked=true;
}
}
function CheckExt(obj)
{
ErrMsg="";
FileMsg="";
FileObj=obj;
IsImg=false;
HasChecked=false;
PreviewImg.innerHTML="预览?/span>";
if(obj.value=="")return false;
MsgList.innerHTML="文g信息处理?img src="http://www.tkk7.com/Images/dot.gif" alt="" />";
document.all.UploadButton.disabled=true;
FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1) //判断文gcd是否允许上传
{
ErrMsg="\n该文件类型不允许上传。请上传 "+AllowExt+" cd的文Ӟ当前文gcd?/span>"+FileExt;
ShowMsg(ErrMsg,false);
return false;
}
if(AllImgExt.indexOf(FileExt+"|")!=-1) //如果囄文gQ则q行囄信息处理
{
IsImg=true;
ImgObj.src=obj.value;
CheckProperty(obj);
return false;
}
else
{
FileMsg="\n文g扩展?"+FileExt;
ShowMsg(FileMsg,true);
}
}
function SwitchUpType(tf)
{
if(tf)
str='<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;">'
else
str='<input type="text" name="file1" onblur="CheckExt(this)" style="width:180px;">'
document.all.file1.outerHTML=str;
document.all.UploadButton.disabled=true;
MsgList.innerHTML="";
}
</script>
<form enctype="multipart/form-data" method="POST" onsubmit="return HasChecked;">
<fieldset style="width: 372; height: 60;padding:2px;">
<legend><font color="#FF0000">囄来源</font></legend>
<input type="radio" name="radio1" checked onclick="SwitchUpType(true);">本地<input type="radio" name="radio1" onclick="SwitchUpType(false);">q程Q?/span><input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;"> <input type="submit" id="UploadButton" value="开始上?/span>" disabled>
<div style="border:1 solid #808080;background:#E0E0E0;width100%;height:20px;color:#606060;padding:5px;">
<table border="0"><tr><td width="60" id="PreviewImg">预览?/span></td><td id="MsgList" valign="top"></td></tr></table>
</div>
</fieldset>
</form>
转蝲Qhttp://hi.baidu.com/kk126/blog/item/a6cdd943a26ca01873f05dee.html
]]>
UA=navigator.userAgent;
is360se = UA.toLowerCase().indexOf('360se')>-1 ? true : false;
alert(is360se);
</script>
<script language=javascript>
function stoprefresh()
{
return "you will lose any unsaved content";
}
function UnloadConfirm()
{ //面d后的事g
alert('d面后的一些清理工?#8230;…');
}
</script>
<body>
<script>
window.onbeforeunload=stoprefresh; //注册关闭前的事g
window.onunload = UnloadConfirm; //注册关闭后的事g
</script>
<a href = "http://www.jb51.net">脚本之家</a>
</body>
]]>
var a = "0.11";
var b = "0.2801";
var c = "1.002";
var sum1 = parseFloat(a)+parseFloat(b)+parseFloat(c);
var sum2 = (parseFloat(a)+parseFloat(b)+parseFloat(c)).toFixed(4)
document.write("a+b+c="+sum1);
document.write("<br/>")
document.write("a+b+c="+sum2)
</script>
aQbQc相加本来?.3921Q但sum1得出的结果ؓQ?/span>1.3921000000000001Q显然不正确Q通过toFixed(n)Ҏ修正后(n是精的数点位敎ͼQ得到正结果?nbsp;
例如QparseFloat(1.392143).toFixed(3)=1.392;
]]>
//L字串左边的空?/span>
function lTrim(str)
{
if (str.charAt(0) == " ")
{
//如果字串左边W一个字WؓI格
str = str.slice(1);//空g字串中去?/span>
//q一句也可改?nbsp;str = str.substring(1, str.length);
str = lTrim(str); //递归调用
}
return str;
}
//L字串双的空?/span>
function rTrim(str)
{
var iLength;
iLength = str.length;
if (str.charAt(iLength - 1) == " ")
{
//如果字串双W一个字WؓI格
str = str.slice(0, iLength - 1);//空g字串中去?/span>
//q一句也可改?nbsp;str = str.substring(0, iLength - 1);
str = rTrim(str); //递归调用
}
return str;
}
//L字串两边的空?/span>
function trim(str)
{
return lTrim(rTrim(str));
}
W二U去?nbsp;I格的方?br />
function fntrimspace(str)//去除首尾I格函数
{
while(str.substring(0,1)==" ")
{
str=str.substring(1);
}
while(str.substring(str.length-1)==" ")
{
str=str.substring(0,str.length-1);
}
return str;
}
相对来说 我比较喜Ƣ第二种LI格的方?br />
]]>
<c:forEach var="name" items="expression" varStatus="name"
begin="expression" end="expression" step="expression">
body content
</c:forEach>
<c:forEach>标签h以下一些属性:
l varQP代参数的名称。在q代体中可以使用的变量的名称Q用来表C每一个P代变量。类型ؓString?/strong>
l itemsQ要q行q代的集合。对于它所支持的类型将在下面进行讲解?/strong>
l varStatusQP代变量的名称Q用来表CP代的状态,可以讉K到P代自w的信息?/strong>
l beginQ如果指定了itemsQ那么P代就从items[begin]开始进行P代;如果没有指定itemsQ那么就从begin开始P代。它的类型ؓ整数?/strong>
l endQ如果指定了itemsQ那么就在items[end]l束q代Q如果没有指定itemsQ那么就在endl束q代。它的类型也为整数?/strong>
l stepQP代的步长?/strong>
<c:forEach>标签的items属性支持Javaq_所提供的所有标准集合类型。此外,您可以用该操作来P代数l(包括基本cd数组Q中的元素。它所支持的集合类型以及P代的元素如下所C:
l java.util.CollectionQ调用iterator()来获得的元素?/strong>
l java.util.MapQ通过java.util.Map.Entry所获得的实例?/strong>
l java.util.IteratorQP代器元素?/strong>
l java.util.EnumerationQ枚丑օ素?/strong>
l Object实例数组Q数l元素?/strong>
l 基本cd值数l:l过包装的数l元素?/strong>
l 用逗号定界的StringQ分割后的子字符丌Ӏ?/strong>
l javax.servlet.jsp.jstl.sql.ResultQSQL查询所获得的行?/strong>
不论是对整数q是寚w合进行P代, <c:forEach>的varStatus属性所L作用相同。和var属性一PvarStatus用于创徏限定了作用域的变量(改变量只在当前标{体内v作用Q。不q,由varStatus属性命名的变量q不存储当前索引值或当前元素Q而是赋予javax.servlet.jsp.jstl.core.LoopTagStatuscȝ实例。该cd含了一pd的特性,它们描述了P代的当前状态,如下q些属性的含义如下所C:
l currentQ当前这ơP代的Q集合中的)V?/strong>
l indexQ当前这ơP代从0开始的q代索引?/strong>
l countQ当前这ơP代从1开始的q代计数?/strong>
l firstQ用来表明当前这轮P代是否ؓW一ơP代,该属性ؓbooleancd?/strong>
l lastQ用来表明当前这轮P代是否ؓ最后一ơP代,该属性ؓbooleancd?/strong>
l beginQbegin属性的倹{?/strong>
l endQend属性的?/strong>
l stepQstep属性的?/strong>
下面来看一个个基本的例子,表格隔行背景色变?
<c:forEach var="item" items="${contents}" varStatus="status">
<tr <c:if test="${status.count%2==0}">bgcolor="#CCCCFE" </c:if> align="left">
xxx </tr>
</c:forEach>
document.getElementById("bigclass").options[window.document.getElementById("bigclass").selectedIndex].text
获取数据库中的id
window.document.getElementById("bigclass").value
获取selectl分配的索引id
window.document.getElementById("bigclass").selectedIndex
例子Q?/span>
<select name="bigclass" id="bigclass" onChange="javascript:updatePage2();">
<option value="" selected="selected">ajax实验</option>
<option value="4">我适宜市哈</option>
</select>
使用
document.getElementById("bigclass").options[window.document.getElementById("bigclass").selectedIndex].text
的结果是Q我适宜市哈
使用
window.document.getElementById("bigclass").value
的结果是Q?
使用
window.document.getElementById("bigclass").selectedIndex
的结果是Q?
1、向Select里添加Option
function fnAddItem(text,value)
{
var selTarget = document.getElementById("selID");
selTarget.Add(new Option("text","value"));
}
2、删除Select里的Option
function fnRemoveItem()
{
var selTarget = document.getElementById("selID");
if(selTarget.selectedIndex > -1)
{//说明选中
for(var i=0;i<selTarget.options.length;i++)
{
if(selTarget.options[i].selected)
{
selTarget.remove(i);
i = i - 1;//注意q一?br />
}
}
}
}
3、移动Select里的Option到另一个Select?br />
function fnMove(fromSelectID,toSelectID)
{
var from = document.getElementById(fromSelectID);
var to = document.getElementById(toSelectID);
for(var i=0;i<from.options.length;i++)
{
if(from.options[i].selected)
{
to.appendChild(from.options[i]);
i = i - 1;
}
}
}
if 里的代码也可用下面几句代码代?/span>
var op = from.options[i];
to.options.add(new Option(op.text, op.value));
from.remove(i);
4、Select里Option的上下移?br />
function fnUp()
{
var sel = document.getElementById("selID");
for(var i=1; i < sel.length; i++)
{//最上面的一个不需要移动,所以直接从i=1开?br />
if(sel.options[i].selected)
{
if(!sel.options.item(i-1).selected)
{//上面的一Ҏ选中Q上下交?br />
var selText = sel.options[i].text;
var selValue = sel.options[i].value;
sel.options[i].text = sel.options[i-1].text;
sel.options[i].value = sel.options[i-1].value;
sel.options[i].selected = false;
sel.options[i-1].text = selText;
sel.options[i-1].value = selValue;
sel.options[i-1].selected=true;
}
}
}
}
在进行上下两互换时Q也可以使用以下代码Q但是效率很低,因ؓ每一ơ的Dom操作都将D整个面的重新布局Q所以不如直接修改元素的属性倹{?/span>
var oOption = sel.options[i]
var oPrevOption = sel.options[i-1]
sel.insertBefore(oOption,oPrevOption);
向下Ud同理
function fnDown()
{
var sel = fnGetTarget("selLeftOrRight");
for(var i=sel.length -2; i >= 0; i--)
{//向下UdQ最后一个不需要处理,所以直接从倒数W二个开?br />
if(sel.options.item(i).selected)
{
if(!sel.options.item(i+1).selected)
{//下面的Option没选中Q上下互?br />
var selText = sel.options.item(i).text;
var selValue = sel.options.item(i).value;
sel.options.item(i).text = sel.options.item(i+1).text;
sel.options.item(i).value = sel.options.item(i+1).value;
sel.options.item(i).selected = false;
sel.options.item(i+1).text = selText;
sel.options.item(i+1).value = selValue;
sel.options.item(i+1).selected=true;
}
}
}
}
5、Select里Option的排?br />
q里借助Array对象的sortҎq行操作QsortҎ接受一个function参数Q可以在q个function里定义排序时使用的算法逻辑?br />
array.sort([compareFunction]) 里compareFunction接受两个参数(p1,p2)Qsort操作q行Ӟarray对象会每ơ传两个D去,q行比较QcompareFunciton必须q回一个整数|当返回?gt;0Ӟp1会排在p2后面Q返回?lt;0Ӟp1会排在p2前面Q返回?0Ӟ不进行操作?br />
例如Q?/span>
function fnCompare(a,b)
{
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
}
var arr = new Array();
//add some value into arr
arr.sort(fnCompare);
//q里sort的操作结果就是arr里的Ҏ由小到大的升序排?br />
//如果把fnCompare里改?br />
//if (a < b)
// return 1;
//if (a > b)
// return -1;
//return 0;
//则sort的结果是降序排列
好,下面是对Select里Option的排?/span>
//因ؓ排序可以按Option的Value排序Q也可以按Text排序Q这里只演示按Value排序
function sortItem()
{
var sel = document.getElementById("selID");
var selLength = sel.options.length;
var arr = new Array();
var arrLength;
//所有Option攑օarray
for(var i=0;i<selLength;i++)
{
arr[i] = sel.options[i];
}
arrLength = arr.length;
arr.sort(fnSortByValue);//排序
//先将原先的Option删除
while(selLength--)
{
sel.options[selLength] = null;
}
//经q排序的Option攑֛Select?br />
for(i=0;i<arrLength;i++)
{
sel.add(new Option(arr[i].text,arr[i].value));
}
}
function fnSortByValue(a,b)
{
var aComp = a.value.toString();
var bComp = b.value.toString();
if (aComp < bComp)
return -1;
if (aComp > bComp)
return 1;
return 0;
}
排序时还可以有更多选项Q比如将value值看做Integer或是Stringq行排序Q得到的l果是不一L。篇q限Ӟ不在多做介绍?br />
我将q些所有的操作都写在了一个文仉Q运行的效果如图Q点ȝ大图Q?/span>
有兴的朋友可以下蝲来看看,里面q设计div+css排版{?/span>