我找了解决方案,但找不到任何有效的方法.
我有一个名为的变量onlyVideo.
"onlyVideo"字符串被传递给一个函数.我想onlyVideo将函数内部的变量设置为某种东西.我怎样才能做到这一点?
(有许多变量可以调用到函数中,所以我需要它动态工作,而不是硬编码if语句.)
编辑:可能有更好的方法来做你正在尝试做的事情.我在JavaScript冒险中很早就问过这个问题.查看JavaScript对象的工作原理.
一个简单的介绍:
// create JavaScript object
var obj = { "key1": 1 };
// assign - set "key2" to 2
obj.key2 = 2;
// read values
obj.key1 === 1;
obj.key2 === 2;
// read values with a string, same result as above
// but works with special characters and spaces
// and of course variables
obj["key1"] === 1;
obj["key2"] === 2;
// read with a variable
var key1Str = …Run Code Online (Sandbox Code Playgroud) 我知道PHP中可能有"变量"变量.例如
$x = "variable";
$$x = "hello, world!";
echo $variable; // displays "hello, world!"
Run Code Online (Sandbox Code Playgroud)
是否可以在javascript中将变量的名称引用为字符串?怎么做?
<script>
//in one script
var someVarName_10 = 20;
</script>
Run Code Online (Sandbox Code Playgroud)
我希望通过变量名称从另一个脚本访问此变量.窗口对象很简单,是否可以使用局部变量?
我的意思是通过以下代码访问此var:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
Run Code Online (Sandbox Code Playgroud) 如果要动态使用全局函数和变量,可以使用:
window[functionName](window[varName]);
Run Code Online (Sandbox Code Playgroud)
是否可以对本地范围内的变量执行相同的操作?
这段代码工作正常,但目前使用eval,我正在考虑如何做到这一点.
var test = function(){
//this = window
var a, b, c; //private variables
var prop = function(name, def){
//this = window
eval(name+ ' = ' + (def.toSource() || undefined) + ';');
return function(value){
//this = test object
if ( !value) {
return eval('(' + name + ')');
}
eval(name + ' = value;')
return this;
};
};
return {
a:prop('a', 1),
b:prop('b', 2),
c:prop('c', 3),
d:function(){
//to show that they are accessible via to methods
return …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在javascript中动态访问本地范围?
大家好.
我们都知道您可以使用[]语法通过它的名称访问javascript对象的属性.例如ob ['nameOfProperty'].
你能为局部变量做同样的事吗?这里的另一个答案表明答案是使用window ['nameOfVar'].然而,这只适用于海报,因为他在窗口级范围内定义变量.
我认为这通常是可能的,因为Firefox的Firebug(我认为是用javascript编写的)可以显示本地和闭包变量.是否有一些我不知道的隐藏语言功能?
具体来说,这就是我想要做的事情:
var i = 4;
console.log(window['i']); // this works..
function Func(){
var j = 99;
// try to output the value of j from its name as a string
console.log(window['j']); // unsurprisingly, this doesn't work
}
Func();
Run Code Online (Sandbox Code Playgroud) 这样我就可以有一个函数说what_way_you_do_this = something.这可能吗?基本上我可以通过给它一个包含变量名称的字符串来告诉函数我想要设置哪个变量.
谢谢
我在Javascript中有一组全局计数器变量:
var counter_0 = 0;
var counter_1 = 0;
var counter_2 = 0;
Run Code Online (Sandbox Code Playgroud)
等等
然后我有一个Javascript函数接受一个映射到那些全局计数器的'索引'号.在这个函数中,我需要使用传递给函数的'index'值来读取和写入这些全局计数器.
我希望它如何工作的示例,但当然根本不起作用:
function process(index) {
// do some processing
// if 'index' == 0, then this would be incrementing the counter_0 global variable
++counter_+index;
if (counter_+index == 13)
{
// do other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我希望我想要完成的事情是清楚的.如果不是,我会尽力澄清.谢谢.
编辑澄清:
我不是试图增加计数器的名称,而是增加计数器包含的值.
如何使后面的代码工作?
var x = 'name';
Run Code Online (Sandbox Code Playgroud)
然后,使用x中的值,因为它是一个变量,并设置它,所以如果我想让它成为NAME,我将得到结果:
var name = 'NAME';
Run Code Online (Sandbox Code Playgroud)
可能吗 ?
所以我正在使用像这样的json变量:
opponentInvData.item1
Run Code Online (Sandbox Code Playgroud)
它包含项目1到6
我需要动态访问不同的项目并将它们设置为null.itemNum是我需要访问的特定项目.我试图使用eval函数
var itemNum = 2;
eval(opponentInvData.item + itemNum + ' = ""');
Run Code Online (Sandbox Code Playgroud)
不用说,它不起作用,任何想法?