2014-02-11 227 views
0

我有一个叫做用户的对象叫做流的全局对象。用户的每个属性都是具有数组值的用户名,该数组用于存储其他对象以及有关每个用户的信息。该项目应该是twitter的一个小版本。例如:无法访问javascript属性

var users = {}; 
users.bill = [] 
users.keith = []; 

var someInfo = {}; 
someInfo.tweet = "Hello, I am a message"; 
someInfo.dateCreated = new Date(); 

users.keith.push(someInfo); 

以上是在包含在我的index.html文件中的单独的.js文件中。我的index.html文件也有一个脚本部分,这是我的问题所在。我试图做的是从tweet属性中检索字符串,当用户名被点击时,使用jQuery。这是我正在尝试的。

var showTimeline = function(){ 
    var tweeter = $(this).text(); // get username from whichever name is clicked on 
    console.log(tweeter);   // log name to console. e.g tweeter holds "keith" 
    console.log(streams.users["keith"][0].message); // this works fine and extracts string as expected 
    console.log(streams.users[tweeter][0].message); // program breaks here and says "tweeter is undefined", right after i logged it to the console and showed it holds the string "keith" 

}; 

jsfiddle

+0

告诉我一个小提琴,但也许在'''用户'''你实际上并没有把'''高音喇叭'' – turnt

+0

嗯......似乎很奇怪......到目前为止我看起来就对.. – VIDesignz

+2

尝试: 'var tweeter = $ .trim($(this).text());' –

回答

2

有一些不可见字符(S)导致的问题:

console.log(tweeter == 'douglascalhoun'); //false 

这解决了它:

var tweeter = $.trim($(this).text()); 

http://jsfiddle.net/26gwz/

+1

或更优雅的'$(this).text()。trim()' –

+2

@MichaRadonov如果你不需要支持IE8或更低版本,或者你想为这些浏览器创建一个垫片,yes 。 –

+0

是的,抱歉,赶紧发表评论 –