可能重复:
Javascript使用变量作为对象名称
如何让JS将字符串视为对先前定义的对象的引用?简化:
var myObject = new MyObject();
var myString = "myObject";
var wantThisToWork = myString.myproperty;
Run Code Online (Sandbox Code Playgroud) 从$ .each()中访问my.rules变量的最佳方法是什么?任何解释为什么/如何也会有所帮助!
app.Style = function(node) {
this.style = node;
this.rules = [];
var ruleHolder = node.find('Rule');
$.each(ruleHolder, function(index, value) {
var myRule = new app.Rule($(ruleHolder[index]));
this.rules.push(myRule);
});
console.log(this.rules)
}
Run Code Online (Sandbox Code Playgroud) 如何i在我的for循环中保持对变量的访问?我正在努力学习,而不仅仅是得到答案,所以一些解释会非常有帮助.谢谢!
var el,
len = statesPolyStrings.length;
for (var i = 0; i < len; i++) {
el = document.getElementById(statesPolyStrings[i]);
google.maps.event.addDomListener(el, 'mouseover', function() {
$("#"+statesPolyStrings[i]).addClass("highlight");
statesPolyObjects[i].setOptions({ strokeWeight: '2' });
});
}
Run Code Online (Sandbox Code Playgroud) Mac似乎忽略了对主机文件的新更改.旧的更改工作没有问题.我花了4个多小时试图弄清楚这个.救命!
我在我的/ Sites文件夹中开发的每个站点都有文件夹.例如,几个文件夹命名为:
wp.dev
daf.dev
test.dev
Run Code Online (Sandbox Code Playgroud)
我运行MAMP,将Apache端口设置为80,将MySQL端口设置为3306(这样我就不必在浏览器中将端口添加到地址栏).
我编辑了我的/ private/etc/hosts文件,如下所示:
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 wp.dev
127.0.0.1 daf.dev
127.0.0.1 test.dev
fe80::1%lo0 localhost
Run Code Online (Sandbox Code Playgroud)
这是踢球者:wp.dev和daf.dev已经存在了一个多月.他们在我的浏览器中解决没有问题.我今天早上添加了test.dev.当我在浏览器中输入它时,它只搜索"test.dev"而不是解析域.
我可以ping任何上述域名,他们转到127.0.0.1,包括test.dev.
为了它的价值,我尝试了virtualhostsx同样的问题.我还运行dscacheutil --flushcache并在进行更改时重新启动MAMP.
我需要在一个新网站上开始开发,这让我发疯.
我正在尝试使用带有express/node.js应用程序的护照.出于某种原因,我无法使用谷歌进行身份验证.Google提供了以下错误:
错误:invalid_request
解析OpenID身份验证请求时出错.
Code:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
var GoogleStrategy = require('passport-google').Strategy;
var UserModel = require('./models/usermodel');
passport.use(new GoogleStrategy({
returnURL: 'http://localhost:3000/auth/google/return',
realm: 'http:/localhost:3000'
},
function(identifier, profile, done) {
profile.email = profile.emails[0].value;
UserModel.findOneAndUpdate({email:profile.email}, {$set:profile, $inc:{logins:1}}, {upsert:true}, done);
}
));
Run Code Online (Sandbox Code Playgroud) 我有一个数组填充了与我创建的Google Maps Polygon Objects同名的字符串.我想迭代数组来设置一个特定的选项.这是代码:
for (var i = 0; i < statesPoly.length; i++) {
google.maps.event.addListener(statesPoly[i], 'mouseover', function() {
statesPoly[i].setOptions({ strokeWeight: '2' });
});
}
Run Code Online (Sandbox Code Playgroud)
执行时,我得到"无法调用方法'setOptions'的undefined",因为脚本似乎是字面上使用statesPoly [i].当我用statesPoly [11]替换statesPoly [i]时,脚本按预期工作.
当我尝试这样的事情时,循环也按预期工作:
for (var i = 0; i < statesPoly.length; i++) {
alert(statesPoly[i].strokeColor);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
更新:
靠近这里.我相信this在某些情况下使用工作的原因是因为我的函数期望一个对象而我给它一个字符串.可能是这种情况吗?
alert(statesPoly[0]);
google.maps.event.addListener(sarawakPoly, 'mouseover', function() {
$("#"+statesPoly[0]).addClass("highlight");
sarawakPoly.setOptions({ strokeWeight: '2' });
//infowindow.open(map,marker);
});
Run Code Online (Sandbox Code Playgroud)
上面的代码将使用SarawakPoly进行警报,并使用statesPoly [0]作为ID中的字符串按预期工作.这个
alert(statesPoly[0]);
google.maps.event.addListener(statesPoly[0], 'mouseover', function() {
$("#"+statesPoly[0]).addClass("highlight");
statesPoly[0].setOptions({ strokeWeight: '2' });
//infowindow.open(map,marker);
});
Run Code Online (Sandbox Code Playgroud)
不起作用,因为"Uncaught TypeError:无法读取未定义的属性'mouseover'"
如果我是对的,如何让我的JS将我的数组变量转换为对象?
javascript ×3
closures ×1
express ×1
hosts-file ×1
jquery ×1
mamp ×1
node.js ×1
osx-lion ×1
passport.js ×1