Js严格模式下,下面的代码怎么改才正确啊

with在严格模式下不能使用,怎么修改才能不报错啊

        for(var i=0;i<count;i++){
            with(obj.elements[i]){
                var _dataType = getAttribute("dataType");
                if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;
                this.ClearState(obj.elements[i]);
                if(getAttribute("require") == "false" && value == "") continue;
                switch(_dataType){
                    case "Date" :
                    case "Repeat" :
                    case "Range" :
                    case "Compare" :
                    case "Custom" :
                    case "Group" : 
                    case "Limit" :
                    case "LimitB" :
                    case "SafeString" :
                        if(!eval(this[_dataType]))  {
                            this.AddError(i, getAttribute("msg"));
                        }
                        break;
                    default :
                        if(!this[_dataType].test(value)){
                            this.AddError(i, getAttribute("msg"));
                        }
                        break;
                }
            }

==========================分界线========================
这段怎么改啊

    ClearState : function(elem){
        with(elem){
            if(style.color == "red")
                style.color = "";
            var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];
            if(lastNode.id == "__ErrorMessagePanel")
                parentNode.removeChild(lastNode);
        }
    },
        for(var i=0;i<count;i++){
            var q = obj.elements[i];
            var _dataType = q.getAttribute("dataType");
            if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;
            this.ClearState(obj.elements[i]);
            if(q.getAttribute("require") == "false" && q.value == "") continue;
            switch(_dataType){
                case "Date" :
                case "Repeat" :
                case "Range" :
                case "Compare" :
                case "Custom" :
                case "Group" : 
                case "Limit" :
                case "LimitB" :
                case "SafeString" :
                    if(!eval(this[_dataType]))  {
                        this.AddError(i, q.getAttribute("msg"));
                    }
                    break;
                default :
                    if(!this[_dataType].test(q.value)){
                        this.AddError(i, q.getAttribute("msg"));
                    }
                    break;
            }
</script>

    ClearState : function(elem){
            if(elem.style.color == "red")
                elem.style.color = "";
            var lastNode = elem.parentNode.childNodes[elem.parentNode.childNodes.length-1];
            if(lastNode.id == "__ErrorMessagePanel")
                elem.parentNode.removeChild(lastNode);
    },