做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>