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几次,这种性能可以忽略不计。

  1. JavaScript的严格模式不支持with。

  2. 容易引起歧义。如果method4这个函数在obj5中不存在,不用with的话,JS直接崩溃,容易查错,但是用了with,有可能一个外部的名为method4就被调用了,可能引起错误蔓延。

  3. 如果有上面的问题的话,object名字很长,可以用下面的方法代替:

    var tempObj = obj1.obj2.obj3.obj4.obj5;

    temoObj.method1();

    temoObj.method2();

    temoObj.method3();

    temoObj.method4()

js Form.elements[i]的使用实例的更多相关文章

  1. 创建dynamics CRM client-side (十三) - 在HTML Web Resource中获取form elements & 获取外部js文件

    上一节我们讨论到创建HTML Web Resource. 但是纯HTML的页面不能满足我们的需求, 所以今天我们来做在HTML Web Resource中获取form elements Please ...

  2. form.elements[i]

    原生js操作form的一些方法,来看下面写的这个demo,这个demo是展示了一下form.eleemnts[i]的意义和用法: <!DOCTYPE html> <html lang ...

  3. 关于js函数,方法,对象实例的一些说明

    朋友们大家好,好久没有更新文章了,最近正好有空就想着写点什么吧,加上这段时间总是能听到一些朋友们问关于js函数,方法,对象实例到底有什么区别这个问题,所以今天就献丑来简单说明一些吧! 其实这些主要都是 ...

  4. form.elements属性

    form.elements属性与childNodes属性不同的是form.elements只返回的是表单元素组成的数组,包括input,textarea等

  5. js81:Image对象,几张图像缓存完之后动画显示,form.elements[],document.images[]

    原文发布时间为:2008-11-09 -- 来源于本人的百度文章 [由搬家工具导入] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  6. 【转】JS回调函数--简单易懂有实例

    JS回调函数--简单易懂有实例 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数. 我们先来看看回调的英文定义:A callback is a function that is ...

  7. Textillate.js有什么用及使用实例

    Textillate.js有什么用及使用实例 一.总结 一句话总结:Textillate.js – 实现动感的 CSS3 文本动画的简单插件 二.textillate.js 文字动画 textilla ...

  8. js的dom对象(带实例超详细全解)

    js的dom对象(带实例超详细全解) 一.总结 一句话总结: 1.DOM中的方法区分大小写么? 解答:区分 2.DOM中元素和节点的关系式什么? 解答:元素就是标签,节点中有元素节点,也是标签,节点中 ...

  9. 用原生 JS 实现双向绑定及应用实例

    写在前面: 所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更也能实时展现到界面.angular封装了双向绑定的方法,使双向绑定变得十分简单.但是在有些场景下(比如下面那个场景),不能使用 ...

随机推荐

  1. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

  2. 您真的理解了SQLSERVER的日志链了吗?

    您真的理解了SQLSERVER的日志链了吗? 先感谢宋沄剑给本人指点迷津,还有郭忠辉童鞋今天在QQ群里抛出的问题 这个问题跟宋沄剑讨论了三天,再次感谢宋沄剑 一直以来,SQLSERVER提供了一个非常 ...

  3. 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

    1:MSSQL SQL语法篇: BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | vie ...

  4. Entity Framework 6 Recipes 2nd Edition(10-1)译->非Code Frist方式返回一个实体集合

    存储过程 存储过程一直存在于任何一种关系型数据库中,如微软的SQL Server.存储过程是包含在数据库中的一些代码,通常为数据执行一些操作,它能为数据密集型计算提高性能,也能执行一些为业务逻辑. 当 ...

  5. 学习python

    最近感觉Python 很不错的样子,乘着这次寒假,不如就先学一下吧. 翻看了一些教程,发现<python 简明教程>质量上乘. 我目前学习python就是打算做一些上位机之类的,好像有点杀 ...

  6. React Native 环境搭建

    1,安装 HomeBrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install ...

  7. AngularJS_01之基础概述、设计原则及MVC设计模式

    1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...

  8. CSS布局之div交叉排布与底部对齐--flex实现

    最近在用wordpress写页面时,设计师给出了一种网页排布图样,之前从未遇到过,其在电脑上(分辨率大于768px)的效果图如下: 而在手机(分辨率小于等于768px)上要求这样排列: 我想到了两种方 ...

  9. Apply Newton Method to Find Extrema in OPEN CASCADE

    Apply Newton Method to Find Extrema in OPEN CASCADE eryar@163.com Abstract. In calculus, Newton’s me ...

  10. Sass:初识Sass与Koala工具的使用

    一.下载Koala(找到合适的系统版本)并安装 二.先新建一个css文件夹,并在里面新建一个文本文档(.txt),将其命名为demo.scss 三.打开Koala,将css文件夹拽进来,可以修改一下输 ...