• 移除当前节点的简便方法

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

       var tr = document.getElementById(id);
       tr.parentNode.removeChild(tr);

            弄了大半天,写了删了一大堆代码,才把这两句轰出来...

    有时候转换一下思路就好了

  • Firefox奇怪的错误 NS_ERROR_XPC_JS_THREW_STRING

    日期:2006-08-03 | 分类:

        这个不痛不痒的alert终于解决:

    错误: [Exception... "'¾n^' XULElement.selectedIndex öCP
    ³' when calling method: [nsIAutoCompletePopup::selectedIndex]"  nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)"  location: "JS frame :: http://127.0.0.1/1/?controller=Login&action=logout :: onmouseover :: line 1"  data: no]
    源文件:http://127.0.0.1/1/?controller=Login&action=logout
    行:1

    代码:

    <input name="card_id" type="text" size="13" maxlength="10"

    onMouseOver="this.focus();this.select();" autocomplete="off" />

    自从加了onMouseOver="this.focus();this.select();" 这句后就一直出现这个错误,原来是自动填充出了问题,加了autocomplete="off" 这个后正常。奇怪的是,密码框没有这个问题......

  •     早上用了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;
    }

  • 接上篇,还附一个美元$ 函数 ...来自Prototype...

    <确实厉害,不仅能取某一元素,还能去一堆的元素>

    Last but not least, a bonus function: The Prototype Dollar Function

    function $() {
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
    element = document.getElementById(element);
    if (arguments.length == 1)
    return element;
    elements.push(element);
    }
    return elements;
    }

    // Sample Usage:
    var obj1 = document.getElementById('element1');
    var obj2 = document.getElementById('element2');
    function alertElements() {
      var i;
      var elements = $('a','b','c',obj1,obj2,'d','e');
      for ( i=0;i

    附一句,blogbus的编辑器太差太难用了!!!