web技巧记录

1,如何显示隐藏table中的一行:
    a, 为显示或隐藏的<tr>设置id属性,以便于引用该行,如:<tr id='idDynamicDisplay'>。
    b, 隐藏该行:document.getElementById('idDynamicDisplay').style.display='none';
    c, 显示该行:document.getElementById('idDynamicDisplay').style.display='';
 注意事项:显示时指定为block会使得table的行数不断递增,并混乱,必须指定为空。
 相关说明:对比visibility属性,display不会为对象保留其占据的物理空间。如果使用visibility,就会发现<tr>
           所在位置被背景色所填充。style.display及style.visibility可作用于很多对象。
    相关链接:动态添加表格行(http://dev.csdn.net/author/Rayfly/f37a22310855463d9846857c858f471d.html)
2, php用于被包含的文件的后缀名该用什么(php还是inc)
 用inc使文件的用途较清晰,不过我在网上看到一篇帖子,说.inc文件在直接通过游览器访问时会被下载(php可不会解析它),如果没加密就麻烦了。所以我打算以后用.inc.php作后缀名,好像后缀名长了点。
3,php模板类HTML_Template_IT的进一步使用
 pear手册中的那个例子太简单了,如果php代码中要对html模板文件中出现的所有变量一一进行手工设置的话,我可能更愿意将php和html混写。我希望写出像下面这样的代码:
    //在最后设置语言文本
 foreach($arrLang as $key=>$value)
       $tpl->setVariable('LANG_'.strtoupper($key), $value);
   //这里通常就是输出: $tpl->show();
上面的代码的希望最后将处理后的模板中的语言文本变量统一地替换为本地语言(如:"{LANG_WELCOME}"替换为"欢迎观临"),当你的模板中使用了嵌套块时,在解析每一块时都调用一次上面的代码是非常糟糕的,而且当解析外层时,如果外层中没有名为'LANG_'.strtoupper($key) 的变量而内层中却有该名称的变量时,你会发现显示的内容中多出了一行(或多行)发育不全的里层内容,具体原因我也不太清楚(没有找到 HTML_Template_IT类的详细使用的资料,实现源代码看得也不太明白)。经过半猜半试验,有了使以上代码正确动作的方法:
#不要按pear中的示例哪样装入模板,并进行设置
$tpl->loadTemplatefile('main.tpl.htm', false, true);   /*第二个参数设置为false,使解析内层变量时,其中无法解析的语言文本变量仍保留,以便随后在最外层解析时可替换这些变量*/
$tpl->clearCacheOnParse = true; /*不加此句导致结果中可能多出了一行(或多行)发育不全的里层内容*/
......处理各块......
#在显示模板之前清理掉未知变量
$tpl->removeUnknownVariables = true;
$tpl->show();

(本条技巧刚刚试出,有待随后实际开发中的检验,本人是初学者,如发现我写的有谬误,还请留言相告,不慎感激!)
4,运用ajax进行网页部分内容的自动刷新。
  《ajax基础教程》上有类似例子,我想要的是一个更简单的例子,尝试写过一个,但这小小的代码块常常在IE6下运行出错或结果异常,现在把调通后的代码贴在下面,免得再浪费时间。
  ///
  //客户端代码:AutoUpdate.html
  ///
 <html>
  <head>
   <script language="JavaScript" type="text/JavaScript">
    /*创建xmlHttp对象*/
    var xmlHttp;
    if (window.ActiveXObject)
     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    else if(window.XMLHttpRequest)
     xmlHttp = new XMLHttpRequest();
    
    /*开始进行自动更新*/
    function doStart()
    {
     var url = "AutoUpdate.php";
     xmlHttp.open("GET",url,true);
     xmlHttp.onreadystatechange = startCallback;
     xmlHttp.send(null);
    }
    
    /*回调函数*/
    function startCallback()
    {
     if(xmlHttp.readyState==4)
     {
      /*用异步获取的信息更新网页*/
      if(xmlHttp.status==200)
       document.getElementById('info').innerHTML = xmlHttp.responseText;
      else if(xmlHttp.status==404)
       document.getElementById('info').innerHTML = "处理页面无法访问";
      else
       document.getElementById('info').innerHTML = "响应异常:"+xmlHttp.status;
      setTimeout('doStart()', 3000);
     }
    }
   </script>  
  </head>
  <body>
   <div id="info"></div>
   <input type="button" value="start" onClick="doStart()" />
  </body>
 </html>
 ///
  //服务器端代码:AutoUpdate.php
  ///
  //禁用缓存
 header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");   // 过去的时间
 echo date('Y-m-d H:i:s');

5,php编码中常犯的错误:
    5.1,用isset去检测array中某个键是否被设置,事实上当key对应的值为NULL时是检测不到的,
        所以得注意设置数组中的空值时,不要使用NULL。
    5.2,$_SERVER['REQUEST_URI']是访问此页面所需的URI,我通常用于将它传递给处理页面,
        然后处理页面再跳转到本页面,不过要注意:当前页面的FORM的METHOD属性为post时,这个
        URI可是不带参数的喔(没有$_SERVER['QUERY_STRING']部分),所以要用get方式的form。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值