zoukankan      html  css  js  c++  java
  • JS脚本的基础应用

    1、<td id=“aa”><span id="bb">Shang</span></td>改变span的值,为“Shang0109”

    function ChangeSpanText()

    {

      var aa=document.getElementById('aa').getElementsByTagName("span")[0].innerText;

      //getElementsByTagName 获取的是数组,此为获取 <td>中所有的<span>
          var xh='0109';
          if(aa.indexOf(aa)!=-1)//先判断是否已包含"0109"
          {
              document.getElementById('aa').getElementsByTagName("span")[0].innerText+="0109";
          }

    }

    2、CheckBox被选中,则span显示,否则不显示(常用作关联功能的使用)

    <tr>

    <td><asp:CheckBox ID="aa" runat="server"  Checked="false" onclick="CBChecked()"/></td>

    <td><span id="bb"><asp:TextBox ID="cc" runat="server" ></asp:TextBox></span></td>

    </tr>

    function CBChecked()

    {

       if(document.getElementById('aa').checked==false)//未被选中
            {

                document.getElementById('bb').style.display='none';//不显示
            }
            else
            {

                document.getElementById('bb').style.display='';//显示
            }

    }

    3、通过一个下拉列表选择种类,一个文本框填写数量,一个“添加”的按钮,并在ListBox中显示明细记录,以供总提交。

    页面的html代码:

    View Code
    <tr>
                    <td class='td_table_1' >
                        <span>选择设备</span>
                    </td>
                    <td class='td_table_2' >
                        <asp:DropDownList ID="ddlDevList" runat="server" class="input_select"></asp:DropDownList>
                    </td>
                    <td class='td_table_1' ><span>数量(个)</span></td>
                    <td class='td_table_2'>
                        <asp:TextBox ID="txtDevNum" runat="server" CssClass="input_150"></asp:TextBox>&nbsp;
                        <input id="btnAdd" type="button" value="添 加" class="unnamed_anliu" onclick="return btnAdd_onclick()" />
                    </td>
                </tr>
                <tr>
                <td class='td_table_1' >
                    <span>添加明细</span>
                </td>
                <td class='td_table_2' colspan='3'>
                    <asp:ListBox ID="ltbDevDetials" runat="server" Width="400px" Height="100px">
                    </asp:ListBox>
                </td>
            </tr>

    参考JS代码:

    View Code
    //添加入库设备信息到ListBox 中,并初始化数量 空;
            function btnAdd_onclick() 
            {
                var ddl=document.getElementById('ddlDevList');
                var index=ddl.selectedIndex;
                var devName=ddl.options[index].text;//设备名称
                //alert(DevName);
                //var dd=ddl.options[index].value;
                //alert(dd);//同上 两个都可以
                
                var devNum=document.getElementById('txtDevNum').value;//设备数量
               
                if(Number(devNum)==0|| isNaN(devNum)==true)//如果数量为空,或者输入的非数字,则提示错误!(包括为空的情况)
                {
                    alert("请正确输入设备数量!");
                    document.getElementById('txtDevNum').value="";
                    return;
                }
                
                //将设备名称和数量添加 到 ListBox当中,已存在的设备 则改变其数量 
                var ltbDevDetials=document.getElementById('ltbDevDetials');
                var ltbCount=ltbDevDetials.options.length;//ListBox 元素的长度
               
                if(ltbCount<=0)
                {
                    //添加一个ListBox元素
                    var option=document.createElement("option");
                    option.value=devNum;
                    option.text=devName +" : "+option.value+"";
                    ltbDevDetials.add(option);
                    document.getElementById('txtDevNum').value="";
                    return;
                }
                else //遍历ListBox中的每一个元素,并与新添加的元素比较,如果该元素设备名已存在,则两者数量相加,否则添加新元素
                {
                    var i,j;
                    for(i=0; i<ltbDevDetials.options.length;i++)
                    {
                      j=ltbDevDetials.options[i].text.indexOf(devName);//判断是否添加过该编号的设备
                      if(Number(j)==0)//ListBox已添加该设备
                      {
                        var num=Number(ltbDevDetials.options[i].value)+Number(devNum);
                        ltbDevDetials.options[i].value=num;//要更新该条设备的数据
                        if(num<=0)
                        {
                            ltbDevDetials.remove(i);
                            document.getElementById('txtDevNum').value="";
                            return;
                        }
                        ltbDevDetials.options[i].text=devName+" : "+num+"";
                        document.getElementById('txtDevNum').value="";
                        return;
                      }
                        
                    }
                }
                if(ltbDevDetials.options.length==i)//说明新添加的设备之前没有被添加过
                {
                    //添加一个ListBox元素
                    var option=document.createElement("option");
                    option.value=devNum;
                    option.text=devName +" : "+option.value+"";
                    ltbDevDetials.add(option);
                    document.getElementById('txtDevNum').value="";
                    return;
                }
            }

    另一个思路,解决:将添加部分(上图所示)更换为一个<iframe></iframe>的框架可以绑定一个新的页面,在新“添加”的时候,可以通过提交Session,再由当前页面从Session中获取后实现“总提交”到数据库中。

    4、通过链接跳转到新页面,并控制新页面的属性,使新页面处于屏幕中间:

    <a href="#" onclick="JumpOutWeb(<%# DataBinder.Eval(Container.DataItem, "id", null) %>)">查看明细</a>

    绑定了该条记录的id;

     function JumpOutWeb(id)//屏幕中间弹出一个web窗体         {
                var left=Math.round((window.screen.width-600)/2);
                var top=Math.round((window.screen.height-200)/2);
                window.open('devDetialsLook.aspx?id='+id, 'newwindow', 'height=200, width=600, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no,target=_blank'+',left='+left+',top='+top)
            }

    Window.Open跳转新页面命令。新页面属性( 'devDetialsLook.aspx?id='+id:是要弹出的页面,也可是html页面,newWindow:新页面的名字,可使用“”代替,

    height:页面高度,width:页面宽度,toolbar:是否显示工具栏,menubar:是否显示:菜单栏, scrollbars:是否显示滚动条,resizable:是否允许改变窗口的大小,location:是否显示地址栏,status:是否显示状态栏内的信息,

    left:窗口距离屏幕左边的像素,top窗口距离屏幕顶端的像素)

    window.location.href('Default.aspx');//替换当前页面,跳转到指定页面,同时页面也可以添加参数如:“Default.aspx?id=1”

    5、判断输入文本框的值是否是数字,不是则提示。

    function IfNumber()
            {
                var tel=document.getElementById("txtTel");
                if(isNaN(tel.value)==true)
                {
                    alert("请输入数字!");
                    tel.focus();//聚焦到该文本框中
                    return false;
                }
                return true;
            }

     <asp:TextBox ID="txtTel" runat="server"  autocomplete="off" onblur="IfNumber();"></asp:TextBox>

    autocomplete="off":清除文本框中的痕迹

    6、页面中提示窗体的实现
    public class Utility
        {
            #region 脚本相关
            /// <summary>
            /// 向页面中增加onload事件方法
            /// attachEvent,可以在onload中绑定多个,
            /// </summary>
            /// <param name="key"></param>
            /// <param name="fun"></param>
            public static void JSAttachEventOnload(string key, string fun)
            {
                Page page = HttpContext.Current.Handler as Page;
                page.ClientScript.RegisterStartupScript(page.GetType(), key, "if

    (window.attachEvent)window.attachEvent(\"onload\", function() { " + fun + " });  

    else   window.addEventListener(\"load\", function() { " + fun + " }, true);", true);
            }
            #endregion
        }
    该方法在.NET中直接调用就可以了
    Utility.JSAttachEventOnload("key","fun");//key自定义//fun 可以使方法名,也可以使js代

    码如:Utility.JSAttachEventOnload("submitFail","alert('提交失败!')");
    Utility.JSAttachEventOnload("aaa","a()");//a()为js方法


    window.attachEvent方法是IE5.0以后提供的方法,该方法可以一个事件,绑定多个处理过程。
    Mozilla/Firefox浏览器不支持该方法,而是使用addEventListener,事件也不以“on”开头,并

    且addEventListener有三个参数。一般情况下,会同时使用这两个方法,以适用于不同的浏览器


    if(document.all){window.attachEvent('onload',事件名);}
    else{window.addEventListener('load',事件名,true/false);}

    7、Web关闭当前页面,一般情况用于关闭弹出的web窗体。

     (1):ClientScript.RegisterStartupScript(Page.GetType(), "", "<script language=javascript>window.opener=null;window.close();</script>");

    (2):ClientScript.RegisterStartupScript(Page.GetType(), "", "<script language=javascript>window.opener=null;window.open('','_self');window.close();</script>");

    将window.opener=null 改为 window.opener.document.location.reload(); 页面在关闭之前会刷新主页面

    (3):关闭当前页面弹出的提示窗口,并在关闭后刷新页面

    Response.write "<script language='javascript'>"& chr(13) &"alert('您已经成功登陆');opener.location.reload();window.close();"&"</script>"

    8、删除链接加提示框。

     <script type="text/javascript" language="javascript">
            function DelWindowLink(code)
            {
                if(window.confirm("确定要删除吗?"))
                {
                    window.location="DevDelete.aspx?Code="+code.toString();
                }
            }
        </script>

    <a href="#" onclick="DelWindowLink(<%# DataBinder.Eval(Container.DataItem,"Code" ,null) %>)" >删 除</a>

    该链接中的code是Repeater中绑定的code,此处可以自行使用。

    9、实现全选的功能

    function  SelectAll()//全选         
            {  
                var checkbox = document.getElementsByTagName("input"); 
                if (checkbox[0].checked == true) { 
                    for (var i = 0; i < checkbox.length; i++){ 
                        checkbox[i].checked = false;
                        if(checkbox[i].type=="text")
                        {
                            checkbox[i].style.display='none';
                        }
                        }
                } 
                else { 
                    for (var i = 0; i < checkbox.length; i++)
                    {
                        checkbox[i].checked = true;
                        if(checkbox[i].type=="text")
                        {
                            checkbox[i].style.display='';
                        }
                     }
                } 
            }

    10:window.attachEvent

    通过监听加载js方法

    <script type="text/javascript language="javascript">

      function initHMenus()

      {

      alert("加载成功!");

      }

    </script>

    后台:

     /// <summary>
    /// 向页面中增加onload事件方法
    /// attachEvent,可以在onload中绑定多个       

    public static void JSAttachEventOnload(string key, string fun)
    {
       //(System.Web.UI)Page

           Page page = HttpContext.Current.Handler as Page;
           page.ClientScript.RegisterStartupScript(page.GetType(), key, "window.attachEvent('onload',initHMenus);",true);

    }

    11、JS获取地址中的参数

    function RedirctNewPage()//获取地址当前页面地址栏中的参数,并附加到新地址实现页面跳转         {
                var gid='';
                var url=window.location.search;
                if(url.indexOf("?")!=-1)  
                {    
                    var str=url.substr(1);    
                    strs = str.split("&");    
                    for(i=0;i<strs.length;i++)    
                    {      
                        if([strs[i].split("=")[0]]=='gid')
                        {
                            gid=unescape(strs[i].split("=")[1]);break;
                         }
                    }
                }
                window.location.href="TerminalExtAdd.aspx?gid="+gid.toString();
            }

    12、获取表中某行某列的值

     var tbID = document.getElementById('tbID');

    tbID.rows(1).cells(2).innerHTML//获取第二行第三列的值

    tbID.deleteRow(1);//删除第二行

    13、执行操作点击确定提示框,刷新主页面并关闭当前页面

    <script src="../resources/script/jquery.js" type="text/javascript"></script>

     <script language="javascript" type="text/javascript">
            //删除知识库
            function DelConfirm(kid) {
                Confirm("确定要删除该条数据吗?", function() { AjaxDel(kid) });
            }
            function AjaxDel(kid) {
                $.ajax({
                    type: "get",
                    url: 'Del.aspx?kid=' + kid,   //后台处理程序  
                    dataType: 'html',    //接受数据格式   
                    data: {},    //要传递的数据
                    success: function(msg) {
                        //执行删除操作后,刷新父页面 列表页面关闭当前页面
                        window.opener.document.location.reload();
                        window.close();//关闭当前页面
                    },
                    error: function() {
                        alert("error");
                    }
                    //               function(XMLHttpRequest, textStatus, errorThrown) {
                    //                   alert(XMLHttpRequest.status);
                    //                   alert(XMLHttpRequest.readyState);
                    //                   alert(textStatus);
                    //               }
                }
           );
            }
        </script>

    14、js调用后台的事件

    在上面的图片中,执行添加,修改,删除等操作后,并对列表页面进行更新,通常情况下,我们执行服务器控件的事件后,页面会被重新加载,如果使用js调用后台的事件,可实现不重新加载页面的效果。

    <script type="text/javascript" language="javascript">
            function test() {
                document.getElementById("btnTest0").click();
            }
        </script>

    <asp:Button ID="btnTest0" runat="server" Text="删 除" class="unnamed_anliu" OnClick="btnTest_Click" />
        <input  type="button" value="执行后台事件" id="btnTest1" onclick="test();"/>

    后台:

     protected void btnTest_Click(object obj, EventArgs e)
            {
                JSAttachEventOnload("suc","alert('测试成功,该方法成功执行了后台的事件!');"); 
            }
            public static void JSAttachEventOnload(string key, string fun)
            {
                Page page = HttpContext.Current.Handler as Page;
                page.ClientScript.RegisterStartupScript(page.GetType(), key, "if (window.attachEvent)window.attachEvent(\"onload\", function() { " + fun + " });   else   window.addEventListener(\"load\", function() { " + fun + " }, true);", true);
            }

    15、刷新父页面,一般用于子页面执行过操作后,刷新父列表页面,更新数据列表

    window.opener.document.location.reload();

    window.close();//关闭当前页面

    16、同级iframe直接的方法调用

     window.parent.document.frames["frm_top"].ccc();

    表示当前iframe调用同级的id为“frm_top”的ccc()方法

  • 相关阅读:
    Python 函数装饰器简明教程
    *arg和**kwarg的区别
    克里金插值
    C语言Hello world
    ibatis错误
    typealias
    视图
    权限分级设置
    走出浮躁的泥沼:学会享受学习过程的乐趣
    R语言 eval(quote(x)) 和 eval(x)
  • 原文地址:https://www.cnblogs.com/Shang0109/p/2777096.html
Copyright © 2011-2022 走看看