function pdf(){
//一個html里面可能存在多個form,所以document.form[0]指的是第一個form,document.form[1]返回就是第二個form,如果沒有第二個form,則返回undefined
//就相當於:document.getElementsByTagName(form)[0]
form = document.getElementsByTagName("form")[0];
with (form) {
var checked = 0;
var checkedObj = null;
for ( var i = 0; i < elements.length; i++) {// 歷遍form下的每個元素,elements.length 就是form 元素的個數,
if (elements[i].name == "checkBoxs") {////檢查每個元素的name屬性是不是 checkBoxs.
if (elements[i].checked) {
checked++;
checkedObj = elements[i];
}
}
}
}
if (checked == 1) {
url = basePath + "/dtms/process/pdfEdit.do?flag_id=" + checkedObj.value;
var w = screen.availWidth;
var h = screen.availHeight;
window .open(
url,
"win",
"fullscreen=0,toolbar=1,location=1,directories=1,status=0,menubar=0,scrollbars=1,resizable=1,width="
+ w + ",height=" + h + ",top=0,left=0", false);
/*打開一個新窗口
Window.open()方法參數詳解(http://www.cnblogs.com/sofiawang/articles/1544631.html):window.open('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no') //該句寫成一行代碼
參數解釋:
window.open 彈出新窗口的命令;
'page.html' 彈出窗口的文件名;
'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替;
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離屏幕上方的象素值;
left=0 窗口距離屏幕左側的象素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動欄。
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態欄內的信息(通常是文件已經打開),yes為允許;
*/
} else if (checked > 1) {
alert("你只能選擇一個選項!");
} else {
alert("你必須選擇一個選項!");
}
}
當中with的用法如下:
當你有一個對象的多個屬性或者方法需要操作時,就可以使用with
比如
<body>
test
<script type="text/javascript">
var o=document.createElement("div");
with(o){
style.cursor="pointer";
style.zIndex="100";
innerHTML="aaaa";
}
document.body.appendChild(o);
</script>
</body>
上面的代碼相當於
<body>
test
<script type="text/javascript">
var o=document.createElement("div");
o.style.cursor="pointer";
o.style.zIndex="100";
o.innerHTML="aaaa";
document.body.appendChild(o);
</script>
</body>
所以with 用於簡化 代碼 操作。
with的弊端:有輕微的性能損失,如果只是在順序代碼中調用了with幾次,這種性能可以忽略不計。
-
JavaScript的嚴格模式不支持with。
-
容易引起歧義。如果method4這個函數在obj5中不存在,不用with的話,JS直接崩潰,容易查錯,但是用了with,有可能一個外部的名為method4就被調用了,可能引起錯誤蔓延。
-
如果有上面的問題的話,object名字很長,可以用下面的方法代替:
var tempObj = obj1.obj2.obj3.obj4.obj5;
temoObj.method1();
temoObj.method2();
temoObj.method3();
temoObj.method4()