我有一个对象
var object= {}
我在对象中放了一些数据然后我想像这样打印
document.write(object.term);
该术语是一个根据不同情况而变化的变量。当我尝试打印时,它会出现未定义的内容。
怎么做?
更新
这是我正在处理的代码。我想它可能和我上面说的不一样,因为我在selenium中使用browsermob进行它,我只是认为它类似于document.write()。这是代码
var numCardsStr = selenium.getText("//div[@id='set-middle']/div[2]/h2");
var numCards = numCardsStr.substr(4,2);
browserMob.log(numCards);
var flash = {}
for(i=0; i<(numCards); i++){
var terms = selenium.getText("//div[@id='words-normal']/table/tbody/tr[" + (i + 2) + "]/td[1]");
var defs = selenium.getText("//div[@id='words-normal']/table/tbody/tr[" + (i + 2) + "]/td[2]");
flash[terms] = defs;
browserMob.log(flash.terms);
}
答案 0 :(得分:3)
如果您正在使用document.write(),则很有可能在实例化之前尝试引用该对象。我的建议:除非你在模板中需要它,否则不要使用document.write()。出于所有其他目的,请等待页面加载,然后将脚本作为事件处理程序运行。
可能还有其他原因导致失败,但您的代码示例不够完整,无法进行诊断。
答案 1 :(得分:3)
编辑: 您使用的是两个不同的变量名您使用flash
和flashcards
。我不知道它们是否应该是同一个东西,但[]
表示法设置值,然后获取它使用.
表示法。
尝试:
var flash = {};
...
flash[terms] = defs;
browserMob.log(flash[terms]);
如果term
是表示要检索的属性的变量,则应使用方括号表示法从对象获取属性。
示例: http://jsfiddle.net/xbMjc/ (使用alert而不是document.write)
var object= {};
object.someProperty = 'some value';
var term = "someProperty";
document.write( object[term] ); // will output 'some value'
答案 2 :(得分:2)
要将整个对象输出为文本,请使用JSON library:
<script type="text/javascript" src="http://www.JSON.org/json2.js"></script>
var o = { "term": "value" };
document.write(JSON.stringify(o, null, 4));
这会将对象输出为字符串并缩进4个空格以便于阅读。
你做的是这个:
var terms = "abcd";
var defs = "1234";
var flash = {};
flash[terms] = defs;
这会创建此对象:
{
"abcd": "1234"
}
如果您想浏览属性(即“abce”),请执行以下操作:
for (var key in flash) {
document.write('Key "' + key + '" has value "' + flash[key] + '"<br/>');
}
这将输出:
Key "abcd" has value "1234"
答案 3 :(得分:1)
避免使用document.write
如果您使用Firefox,请安装firebug并使用它console api
同样的控制台api也应该在chrome中工作。
对于IE,请获取companion js
在javascript中,如果属性名称在手边已知,则使用obj.propertyname。如果不是,那么:
如果pn包含属性名称,则obj [pn]应该为您提供值。
答案 4 :(得分:1)
因为我还没有看到这个提到:
var a = {prop1:Math.random(), prop2:'lol'};
a.toString = function() {
output = [];
for(var name in this) if(this.hasOwnProperty(name) && name != 'toString') {
output.push([name, this[name]].join(':'));
}
return "{\n"+output.join(",\n\t")+"\n}";
};
document.write(a);
// should look like:
/*
{
prop1:0.12134432,
prop2:lol
}
*/
如果您要定义对象类,例如MyObj
:
var MyObj = function(id) {
this.someIdentity = id;
};
MyObj.prototype.toString = function() {
return '<MyObject:'+this.someIdentity+'>';
};
然后你随时写下像
这样的东西document.write(new MyObject(2));
它将显示为<MyObject: 2>
。
答案 5 :(得分:0)
在Firefox和Chrome / Safari中你可以简单地使用...
var myObj = {id: 1, name: 'Some Name'};
window.console.log(myObj);
控制台将输出类似“对象”的内容
如果您使用的是Chrome,则可以使用内置的开发者控制台轻松检查对象的内部值。
如果你使用firefox,输出也应该来自firebug ......
我说这是使用document.write的替代方法,因为在文档上输出内容对我来说似乎有点侵入...