我有一个DIV
<div id="base"></div>
JS如下
<script type="text/javascript">
function Person()
{
this.name;
this.sex;
this.age;
}
function setAtt()
{
var myPerson = new Person();
myPerson.name = "名字";
myPerson.sex = "男";
myPerson.age = "26";
var objBase = document.getElementById("base");
objBase.setAttribute("Person",myPerson);
}
function getAtt()
{
var objBase = document.getElementById("base");
var myPerson = objBase.getAttribute("Person");
alert(typeof(myPerson));
alert(myPerson.constructor);
alert(myPerson.name + "---" + myPerson.sex + "---" + myPerson.age);
}
</script>
当在IE下,首先调用setAtt()方法,对DIV附加属性"Person"后,调用getAtt()方法提示如下.
alert(typeof(myPerson)) 为 OBJECT;
alert(myPerson.constructor) 为 function Person(){...}
alert(myPerson.name + "---" + myPerson.sex + "---" + myPerson.age) 为 名字---男---26在FireFox 下
alert(typeof(myPerson)) 为 string
alert(myPerson.constructor) 为 function String(){...}
alert(myPerson.name + "---" + myPerson.sex + "---" + myPerson.age) 为 undefind---undefind---undefind
请问...我要如何做才能获取和IE下一样的结果...
前提是 实例化的对象必须要做为属性附给 DIV?????
<div id="base"></div>
JS如下
<script type="text/javascript">
function Person()
{
this.name;
this.sex;
this.age;
}
function setAtt()
{
var myPerson = new Person();
myPerson.name = "名字";
myPerson.sex = "男";
myPerson.age = "26";
var objBase = document.getElementById("base");
objBase.setAttribute("Person",myPerson);
}
function getAtt()
{
var objBase = document.getElementById("base");
var myPerson = objBase.getAttribute("Person");
alert(typeof(myPerson));
alert(myPerson.constructor);
alert(myPerson.name + "---" + myPerson.sex + "---" + myPerson.age);
}
</script>
当在IE下,首先调用setAtt()方法,对DIV附加属性"Person"后,调用getAtt()方法提示如下.
alert(typeof(myPerson)) 为 OBJECT;
alert(myPerson.constructor) 为 function Person(){...}
alert(myPerson.name + "---" + myPerson.sex + "---" + myPerson.age) 为 名字---男---26在FireFox 下
alert(typeof(myPerson)) 为 string
alert(myPerson.constructor) 为 function String(){...}
alert(myPerson.name + "---" + myPerson.sex + "---" + myPerson.age) 为 undefind---undefind---undefind
请问...我要如何做才能获取和IE下一样的结果...
前提是 实例化的对象必须要做为属性附给 DIV?????
{
this.name;
this.sex;
this.age;
}
Person.prototype.toString = function() {
return "{name:'"+ this.name + "',sex:'" + this.sex + "',age:" + this.age+"}";
};
function setAtt()
{
var myPerson = new Person();
myPerson.name = "名字";
myPerson.sex = "男";
myPerson.age = "26";
var objBase = document.getElementById("base");
objBase.setAttribute("Person",myPerson.toString());
}
function getAtt()
{
var objBase = document.getElementById("base");
var myPerson = objBase.getAttribute("Person");
myPerson = eval("("+myPerson+")");
alert(myPerson.name + "---" + myPerson.sex + "---" + myPerson.age);
}
// 把对象序列化成json 字符串
function obj2str(o){
var r = [];
if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
if(typeof o =="undefined") return "undefined";
if(typeof o == "object"){
if(o===null) return "null";
else if(!o.sort){
for(var i in o)
r.push(i+":"+obj2str(o[i]))
r="{"+r.join()+"}"
}else{
for(var i =0;i<o.length;i++)
r.push(obj2str(o[i]))
r="["+r.join()+"]"
}
return r;
}
return o.toString();
}function Person()
{
this.name;
this.sex;
this.age;
}
function setAtt()
{
var myPerson = new Person();
myPerson.name = "名字";
myPerson.sex = "男";
myPerson.age = "26";
debugger;
var objBase = document.getElementById("base");
objBase.setAttribute("Person",obj2str(myPerson));
}
function getAtt()
{
debugger;
var objBase = document.getElementById("base");
// 用eval 把json 字符串转换成 js 对象
var myPerson = eval("("+ objBase.getAttribute("Person")+")");
alert(typeof(myPerson));
alert(myPerson.constructor);
alert(myPerson.name + "---" + myPerson.sex + "---" + myPerson.age);
}
setAtt();
getAtt();
</script>