交流|分享
category: JavaScript
tags:

string script = “<script>”;
script = script + “js code;”;
script = script + “js code;”;
script = script + “</script> “;
ScriptManager.RegisterStartupScript(UpdatePanel4, this.GetType(), “script”, script, false);

UpdatePanel4:对象id
this.GetType():脚本块的类型
“script”:标识符
script:脚本内容
false:不添加<script></script>

category: JavaScript
tags:

不同页面传值的老版本
改进点:支持同页面有多个文本框,可自动向不同的文本框传值。先看演示吧

其实原理也很简单。同样先通过getAttribute判断type属性,捕捉到按钮。然后在按钮onclick时把i通过url传入子页面。

  1. <h2>input1</h2>
  2. <input type="text" /><input type="submit" />
  3. <h2>input2</h2>
  4. <input type="text" /><input type="submit" />
  5.  
  6. <script type="text/javascript"><!--
  7. var aInput = document.getElementsByTagName("input");
  8. for (i = 0 ; i < aInput.length ; i++ )
  9. {
  10.         (
  11.             function (i){
  12.                 if (aInput[i].getAttribute("type") == "submit")
  13.                 {
  14.                         aInput[i].onclick = function (){
  15.                         window.open('b.html?'+i,'newwindow','height=100,width=400')
  16.                     }
  17.                 }
  18.             }
  19.         )(i)
  20. }
  21. // --></script>



子页面用slice方法对url进行切分。并使用window.opener方法捕捉到父页面的文本框,进行赋值。 一切就OK了

  1. <h2>openWindow</h2>
  2. <input type="text" /><input type="submit" />
  3.  
  4. <script type="text/javascript"><!--
  5. var aInput = document.getElementsByTagName("input");
  6.  
  7. for (i = 0 ; i < aInput.length ; i++ )
  8. {
  9.     if (aInput[i].getAttribute("type") == "text") var textboxB = new Object(aInput[i]);
  10.     if (aInput[i].getAttribute("type") == "submit") var btnB = new Object(aInput[i]);
  11. }
  12.  
  13. btnB.onclick = function(){
  14.     var sTextValue = textboxB.value
  15.     var aInput = window.opener.document.getElementsByTagName("input");
  16.     var sUrl = document.location;
  17.     var sNo = sUrl.toString().slice(-1)
  18.     window.opener.aInput[sNo-"1"].value = sTextValue
  19.     window.close();
  20. }
  21. // --></script>

还没明白的朋友看一下原理图就知道了

category: JavaScript
tags:

大家仔细看下面两段代码,代码一的window.onload = doIt()函数后面有();而代码二的window.onload = doIt函数名后面没有括号。

把两段代码分别测试后发现不带括号的window.onload在页面加载后显示了正确的效果。 我想window.onload也相当于一个触发事件,如果函数加了括号那就直接先执行函数,再加载body。而不加括号,则相当于将一个函数当作变量赋值到window.onload上,并不立即加载。

代码一:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <script>
  5.         window.onload = doIt();
  6.         function doIt() {
  7.                 var oDiv = document.getElementById("div1");
  8.             alert (oDiv);
  9.         }
  10.     </script>
  11. </head>
  12. <body>
  13.     <div id="div1"></div>
  14. </body>
  15. </html>



代码二:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <script>
  5.         window.onload = doIt;
  6.         function doIt() {
  7.                 var oDiv = document.getElementById("div1");
  8.             alert (oDiv);
  9.         }
  10.     </script>
  11. </head>
  12. <body>
  13.     <div id="div1"></div>
  14. </body>
  15. </html>
category: JavaScript
tags:

这是一个Q&A的页面,设计师希望能够点击相关的问题后,在它下方显示对应的答案。这是一个比较常见功能,通常的解决办法是把“答案”当作整个问题容器的子元素,然后点击父元素上的按钮后展开对应的子元素。通过父子元素的对应关系来匹配标题和答案。

但是当初写html的时候并没有考虑到脚本编写(需求是后加的),所以,答案和标题没有父子关系可以对应。 html代码如下。

所以,这里需要用到另一种方法来匹配答案和标题。我们可以通过捕捉元素的位置来匹配它们。也就是说第一条标题,对应的肯定是整个序列中的第一条答案,第二条标题对应的肯定是第二条答案。 这样就可以无视html结构来控制它们的对应关系了。

  1. <ul class="qusetionList">
  2.     <li class="liHeader"><span class="colABC-A">編號</span><span class="colABC-B">標題</span><span  class="colABC-C">編輯者/發問者</span></li>
  3.  
  4.     <li class="liBody"><span class="colABC-A">1</span><span class="colABC-B">想要開小店需要付費嗎?</span><span  class="colABC-C"><a href="#" title="" class="openLink"></a> 客服</span></li>
  5.     <li class="answer"><span class="colABC-B">
  6.     現階段於策視其所以不收取任何費用,請使用者不用擔心。<BR>
  7.     除了加值服務的功能模組之外。</span><span  class="colABC-C"><a href="#" title="" class="closeLink"></a> 客服</span></li>
  8.  
  9.     <li class="liBody"><span class="colABC-A">2</span><span class="colABC-B">想要開小店需要付費嗎?</span><span  class="colABC-C"><a href="#" title="" class="openLink"></a> 客服</span></li>
  10.     <li class="answer"><span class="colABC-B">
  11.     現階段於策視其所以不收取任何費用,請使用者不用擔心。<BR>
  12.     除了加值服務的功能模組之外。</span><span  class="colABC-C"><a href="#" title="" class="closeLink"></a> 客服</span></li>
  13. </ul>



脚本解释:当点击openLink这个图标时,显示和openLink在序列中位置相同的answer。这里需要将onclick事件放在闭包里面,等到for循环结束后才被激活。如果没有这层闭包,那不管点击哪个openLink,显示的都将是openLink.length的值。

  1. document.getElementsByClassName = function(eleClassName)
  2. {
  3. var getEleClass = [];//定义一个数组
  4. var myclass = new RegExp("\\b"+eleClassName+"\\b");//创建一个正则表达式对像
  5. var elem = this.getElementsByTagName("*");//获取文档里所有的元素
  6. for(var h=0;h<elem.length;h++)
  7. {
  8. var classes = elem[h].className;//获取class对像
  9. if (myclass.test(classes)) getEleClass.push(elem[h]);//正则比较,取到想要的CLASS对像
  10. }
  11. return getEleClass;//返回数组
  12. }
  13. //上面这是捕捉class的方法,我一直用它,复制过来就OK。
  14.  
  15. var answer = document.getElementsByClassName("answer");
  16. var openLink = document.getElementsByClassName("openLink");
  17. var closeLink = document.getElementsByClassName("closeLink");
  18.  
  19. for (i = 0; i< openLink.length ; i++ )
  20. {
  21.         (
  22.         function(i){
  23.                 openLink[i].onclick = function (){
  24.                         var j = i;
  25.                         answer[j].style.display = "block"
  26.                 }
  27.                 closeLink[i].onclick = function (){
  28.                         var j = i;
  29.                         answer[j].style.display = "none"
  30.                 }
  31.         }
  32.         )(i);
  33. }

演示地址

category: JavaScript
tags:

 
这是一份报名表单,要求用户在选中“专业人士访问员”和“定性访问员”后,分别显示“可提供被访者类型”和“容易接触到的行业”的对应表单。当呈未选中状态时,这2个框也对应的隐藏起来。

html部分

  1. <p>
  2.     <label class="title">报名参加的兼职职位(必填项)<br/>按住Ctrl键可多选</label>
  3.     <select onchange="showEasyVisitBox(this)" size="10" style="width: 200px;" multiple="multiple" id="kc_selectjob" name="kc_selectjob">
  4.         <option selected="selected" value="入户访问员">入户访问员</option>
  5.         <option value="街访访问员">街访访问员</option>
  6.         <option value="街访拦截员">街访拦截员</option>
  7.         <option value="电话访问员">电话访问员</option>
  8.         <option value="神秘顾客">神秘顾客</option>
  9.         <option value="专业人士访问员">专业人士访问员</option>
  10.         <option value="企业深访员">企业深访员</option>
  11.         <option value="定性联络员">定性联络员</option>
  12.         <option value="主持人">主持人</option>
  13.         <option value="质量控制员">质量控制员</option>
  14.         <option value="数据录入员">数据录入员</option>
  15.     </select>
  16. </p>
  17. <p id="supportvisitBox" style="display: none;">
  18.     <label class="title">可提供被访者类型</label>
  19. </p>
  20. <p id="easyvisitBox" style="display: none;">
  21.     <label class="title">容易接触到的行业</label>
  22. </p>

 

javascript部分

option不能定义事件(我没试出来),所以事件要定义在select上。 这里使用的是onchange事件,onchange事件是当对象发生变化时触发,在这里用onchange比onclick合理许多,效果也好。
在调试这个脚本的时候,一开始我是用selectedIndex,试验多次发现selectedIndex在多选的情况下只能捕捉到第一个选中的选项,无法承担多选的工作。查了下参考书,才发现自己走了弯路。

  1. var oListBox = document.getElementById("kc_selectjob");
  2.  
  3. oListBox.onchange = function showEasyVisitBox(){
  4.     var oEasyvisitBox = document.getElementById("easyvisitBox");
  5.     var oSupportvisitBox = document.getElementById("supportvisitBox");
  6.     if (oListBox.options[5].selected)
  7.     {
  8.         oEasyvisitBox.style.display = "block";
  9.     }
  10.     else {
  11.         oEasyvisitBox.style.display = "none";
  12.     }
  13.  
  14.     if (oListBox.options[7].selected)
  15.     {
  16.         oSupportvisitBox.style.display = "block";
  17.     }
  18.     else {
  19.         oSupportvisitBox.style.display = "none";
  20.     }
  21.  
  22. }

演示地址

category: JavaScript
tags:

最近太忙,近一个月没更新blog,残念~ 希望这周能够解脱悲惨的命运~

父窗口代码

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <TITLE> Window 1 </TITLE>
  5. </HEAD>
  6.  
  7. <BODY>
  8. <H1>Window 1</H1>
  9. <INPUT TYPE="text" NAME=""><INPUT TYPE="submit">
  10.  
  11. <script>
  12. var aInput = document.getElementsByTagName("input");
  13. for (i = 0 ; i < aInput.length ; i++ )
  14. {
  15. if (aInput[i].getAttribute("type") == "text") var textboxA = new Object(aInput[i]);
  16. if (aInput[i].getAttribute("type") == "submit") var btnA = new Object(aInput[i]);
  17. } // 这里把html里的2个标签定义出来,让行为层和结构层分离的更彻底
  18.  
  19. btnA.onclick = function()
  20. {
  21. window.open('b.html','newwindow','height=100,width=400')
  22. } //使用window.open方法弹出窗口;此方法适用于各种浏览器
  23. </script>
  24. </BODY>
  25. </HTML>

弹出窗口代码

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <TITLE> New Document </TITLE>
  5. </HEAD>
  6.  
  7. <BODY>
  8. <H1>Window 2</H1>
  9. <INPUT TYPE="text" NAME="" value="11"><INPUT TYPE="submit">
  10.  
  11. <script>
  12. var aInput = document.getElementsByTagName("input");
  13. for (i = 0 ; i < aInput.length ; i++ )
  14. {
  15. if (aInput[i].getAttribute("type") == "text") var textboxB = new Object(aInput[i]);
  16. if (aInput[i].getAttribute("type") == "submit") var btnB = new Object(aInput[i]);
  17. }
  18.  
  19. btnB.onclick = function(){
  20. var sTextValue = textboxB.value
  21. window.opener.textboxA.value = sTextValue
  22. window.close();
  23. } //使用window.opener 方法获取父页面的对象,把子页面的值赋过去
  24. </script>
  25. </BODY>
  26. </HTML>

演示地址

category: JavaScript
tags:

弹出一个对话框,让用户确认是否执行操作,常在删除按钮上。

  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function disp_confirm()
  5.   {
  6.   var r=confirm("Press a button")
  7.   if (r==true)
  8.     {
  9.     document.write("You pressed OK!")
  10.     }
  11.   else
  12.     {
  13.     document.write("You pressed Cancel!")
  14.     }
  15.   }
  16. </script>
  17. </head>
  18. <body>
  19.  
  20. <input type="button" onclick="disp_confirm()" value="Display a confirm box" />
  21.  
  22. </body>
  23. </html>

 ’\n’ 可以用来换行,相当于html里的<br />

  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function confirmAdd() {
  5.     var msg = "你好\n确认要修改收件地址?";
  6.     if (confirm(msg)==true){
  7.     return true;
  8.     }else{
  9.     return false;
  10.     }
  11. }
  12. </script>
  13. </head>
  14. <body>
  15. <a href="" onclick="javascript:return confirmAdd()">修改收件地址</a>
  16.  
  17. </body>
  18. </html>

 

category: JavaScript
tags:

函数部分

  1. <script type="text/javascript">
  2. function sysTab() {
  3. $('#container > ul').tabs({ selected: 0 });
  4. }
  5. </script>
  1. <body>
  2.  
  3. <div id="container"><!--需要加载的dom-->
  4. <ul>
  5. <li><a href="#fragment-1"><span>ルートフォルダの定義</span></a></li>
  6. <li><a href="#fragment-2"><span>文書管理</span></a></li>
  7. <li><a href="#fragment-3"><span>表示設定</span></a></li>
  8. <li><a href="#fragment-4"><span>メール設定</span></a></li>
  9. <li><a href="#fragment-5"><span>データベース管理</span></a></li>
  10. <li><a href="#fragment-6"><span>フォルダ監視</span></a></li>
  11. <li><a href="#fragment-7"><span>システム管理</span></a></li>
  12. </ul>
  13. .................
  14. </div><!--需要加载的dom end-->
  15.  
  16. <script type="text/javascript">
  17. sysTab();
  18. </script> //提前加载函数
  19. <!--剩余的大段代码-->
  20. </body>

这样就可以在指定的dom输出完毕后就执行javascript,而不需要等待页面全部加载完毕。