• 细心 细心 再细心 !

    日期:2006-07-31 | 分类:

    一时大意,被几个HTML代码折腾了一个下午...

    下面是我一个弹出框的小代码:

    <div id="report">
     <div class="hd" id="report_header">请输入举报内容</div>
     <div class="bd">
      <form name="reportForm" method="POST" action="?controller=Report&action=create">
       <p>举报内容:</p>
       <textarea name="body" id="report_body" cols="40" rows="8" ></textarea>
       <input type="hidden" name="item_id" id="item_id" value="">
      </form>
     </div>
    </div>

        原本我想当输入为空时,将header改为 '你输入的举报内容为空,请输入举报内容'。于是有了以下代码:

    var handleSubmit = function() {
     if(document.getElementById("report_body").value == '') {
     document.getElementById("report_header").value ='你输入的举报内容为空,请输入举报内容';
     return false;
     }
     this.submit();
    }

    但怎么试也没成功,用YUI的setHeader却可以,暂时敷衍了事...

        很久很久以后(故事发生在昨天),下午由于要加一段清空提示的代码,才发现这个问题:头部内容还是无法更改,查Module.js的代码,查文档都没有发现有价值的地方。最终还是仔细检查上面两段代码,才发现一个十分可笑的地方。见红色的value,那可不是输入框啊,晕!改为innerHTML后一切如我所愿...

  • YAHOO.util.Dom.setStyle 无法生效

    日期:2006-07-30 | 分类:

    再次耗费一个小时,发现YAHOO.util.Dom.setStyle无论如何都无法在我的代码中生效

    YAHOO.util.Dom.setStyle= ("div", "width", "100px");

    YAHOO.util.Dom.setStyle= ("div", "display", "none");

    YAHOO.util.Dom.setStyle= ("item", "display", "none");

    YAHOO.util.Dom.setStyle= ("div", "background-color", "red");

    ................................

    在网上看到别人这样写

    YAHOO.util.Dom.setStyle(["div1","div2","div3"], "color","red");

    YAHOO.util.Dom.setStyle(objDiv, 'height',t);

    YUI里的代码这样写

    DOM.setStyle(del, "visibility", "");

    DOM.setStyle(lel, "visibility", "hidden");

     我就是无法成功...

    可怜我现在的 toggle() 要写成这样了

    function toggle(obj) {
     var el = document.getElementById(obj);
     if ( YAHOO.util.Dom.getStyle(obj,'visibility') != 'hidden' ) {
      el.style.visibility='hidden';
     }
     else {
      el.style.visibility = 'visible';
     }
    }

  •     早上用了dustindiaz的toggle() ,发现el.style.display 的取值不正常....

    原来除了内联的css外,不能直接这样取值,IE下可以用currentStyle顶替,firefox下就要通过document.defaultView.getComputedStyle(xxxl).getPropertyValue(xxx) 来取值,十分不方便,上网傻找了一通,无果....

        很幸运的是,YUI的DOM里面就内置了一个getStyle函数,可以直接取当前css的值。部分代码如下:

    if (property == 'opacity' && el.filters) {// IE opacity
        value = 1;
        try {
           value = el.filters.item('DXImageTransform.Microsoft.Alpha').opacity / 100;
        } catch(e) {
           try {
              value = el.filters.item('alpha').opacity / 100;
           } catch(e) {}
        }
     } else if (el.style[camel]) { // camelCase for valid styles
        value = el.style[camel];
     }
     else if (isIE && el.currentStyle && el.currentStyle[camel]) { // camelCase for currentStyle; isIE to workaround broken Opera 9 currentStyle
        value = el.currentStyle[camel];
     }
     else if ( dv && dv.getComputedStyle ) { // hyphen-case for computedStyle
        var computed = dv.getComputedStyle(el, '');
       
        if (computed && computed.getPropertyValue(hyphen)) {
           value = computed.getPropertyValue(hyphen);
        }
    }

    现在修改一下toggle() ,

    function toggle(obj) {
     var el = YAHOO.util.Dom.getStyle(obj, "visibility");
     if ( el != 'hidden' ) {
      YAHOO.util.Dom.setStyle(obj, "visibility", "hidden");
     }
     else {
      YAHOO.util.Dom.setStyle= (obj, "visibility", "visible"); }
    }

    搞定!现在效率虽然是相对差了些,不过方便易用多了^-^

    如果不喜欢YUI,还有另外一个通用函数:

    function GetCurrentStyle (obj, prop) {
    if (obj.currentStyle) {
    return obj.currentStyle[prop];
    }
    else if (window.getComputedStyle) {
    prop = prop.replace (/([A-Z])/g, "-$1");
    prop = prop.toLowerCase ();
    return window.getComputedStyle (obj, "").getPropertyValue(prop);
    }
    return null;
    }

  • 今天再遇怪事 关于编码

    日期:2006-07-29 | 分类:

        一直程序都乖乖的显示中文,先前AJAX get 取得的数据乱码在php输出一个

    header('Content-Type:text/html;charset=GB2312'); 搞定。

        今天因为要输入中文数据,post后的数据死活乱码。搜索一下,原来是xmlhttp提交的数据为utf-8编码。原本打算将程序都换成utf-8算了,但是找了很久,找到的软件都不是很好。如果真的转换,还要将数据库编码都要改,改动相当大。

        没办法,唯有放弃这种方法,只将输入的utf-8转换成gb2312算了,反正需要输入中文的地方不多(项目小……^-^)。将就一下,在需要的地方来一个

    iconv("UTF-8", "GB2312", $_POST['submit']); 就行了...

  • 开始界面设计

    日期:2006-07-26 | 分类:

        早上基本完成了认证系统的后台编码,本打算接着进行界面的设计,想不到竟然又断电了。

        希望晚上能正常工作...