做web的离不开两个常用对象:json 对象 和 dom 对象
有的时候在调试的时候知道得到的是个对象,也对这个对象做点儿“手脚”,可是就是不知道
这个对象中用什么东西?这下就郁闷了,进入了浑浑噩噩的疯狂试验中~~~~~
现在说一下如何简单区分上面的两个对象(所有测试都是在IE中进行,不保证其它浏览器支持!)
调试步骤:——————————————————
1.确定对象类型
很简单了,使用alert 弹出看看弹出内容是什么就OK了
如果弹出的内容是 [Object Object] ,那多半就是 json 对象了
如果弹出的内容类似[object HTML.......] 格式,那肯定是 html 的 dom 对象了
2.确定了对象类型,接下来就是要看对象的代码段内容了
2.1 如果是 HTML DOM 对象
直接用 alert(dom1.outerHTML); 就可以弹出 dom 元素了
2.2 如果是 json 对对象
使用 alert(String.toSerialize(myjson)); 就OK了
注意:String.toSerialize() 方法是自己封装的
测试代码段如下:——————————————————
<body> <div id="mydiv"> <span id ="myspan" >hello world!</span> </div> <input type="button" onClick="test()" value="Test"></button>
<script language="javascript"> var myjson=[{id:"i1",value:"v1"},{id:"i2",value:"v2"}] var dom1 = document.getElementById("mydiv"); function test() { //1.查看对象类型 alert(dom1); alert(myjson);
//2.发序列化对象对象内容 //2.1 如果是 dom 元素 alert(dom1.outerHTML); //2.2 如果是 json 元素 alert(String.toSerialize(myjson));
}
String.format = function (str) { if (arguments.length == 0) return null;
var str = arguments[0]; for (var i = 1; i < arguments.length; i++) { var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm'); str = str.replace(re, arguments[i]); } return str; }; /*对string 对象的扩展*/ /*对象序列化为字符串*/ String.toSerialize = function (obj) { var ransferCharForJavascript = function (s) { var newStr = s.replace( /[\x26\x27\x3C\x3E\x0D\x0A\x22\x2C\x5C\x00]/g, function (c) { ascii = c.charCodeAt(0); return '\\u00' + (ascii < 16 ? '0' + ascii.toString(16) : ascii.toString(16)); } ); return newStr; } if (obj == null) { return null } else if (obj.constructor == Array) { var builder = []; builder.push("["); for (var index in obj) { if (typeof obj[index] == "function") continue; if (index > 0) builder.push(","); builder.push(String.toSerialize(obj[index])); } builder.push("]"); return builder.join(""); } else if (obj.constructor == Object) { var builder = []; builder.push("{"); var index = 0; for (var key in obj) { if (typeof obj[key] == "function") continue; if (index > 0) builder.push(","); builder.push(String.format("\"{0}\":{1}", key, String.toSerialize(obj[key]))); index++; } builder.push("}"); return builder.join(""); } else if (obj.constructor == Boolean) { return obj.toString(); } else if (obj.constructor == Number) { return obj.toString(); } else if (obj.constructor == String) { return String.format('"{0}"', ransferCharForJavascript(obj)); } else if (obj.constructor == Date) { return String.format('{"__DataType":"Date","__thisue":{0}}', obj.getTime() - (new Date(1970, 0, 1, 0, 0, 0)).getTime()); } else if (this.toString != undefined) { return String.toSerialize(obj); } }; </script>
转载于:https://www.cnblogs.com/xxj-jing/archive/2012/03/27/2890076.html
相关资源:各显卡算力对照表!