也许是一个稍微暗淡的问题,但我正在设计一些我正在使用javascript / jquery来改变网站布局的东西,我想看到变量名称和它的当前值的值另一个div。
我只是在做$test.append('example string' + exampleVar)
,所以我想我会创建一个名为test()的函数。
到目前为止,我有:
function test (test) {
$test = $('.test');
$test.append(test+"<br>");
}
然后将传递一个变量名作为参数,但我找不到任何方法使它将名称显示为字符串。我知道将它作为一个对象来访问密钥和值,但这似乎并没有真正起作用?
答案 0 :(得分:1)
这是一个冗长的方式,但这是一个使用对象的例子:
function tester(options) {
var keys = Object.keys(options);
console.log(keys[0] + ': ' + options[keys[0]]); // test: My value
}
tester({ test: 'My value' });
答案 1 :(得分:0)
在函数中,您将使用参数。因此,在这种情况下,“变量名称”将始终是参数的名称。在这种情况下,获取字符串值将始终是测试。我认为这不是你想要的。你是对的,最好的方法是使用一个对象并迭代键值。你会这样做:
var test = {
"test" : "value"
};
function test (test) {
var k, $test = $('.test');
for(k in test){
$test.append(k + "<br>");
}
}
另外,我认为没有办法获取变量字符串名称。所以上面将是获取变量名称的方法。
答案 2 :(得分:0)
您可以使用javascript功能obj["prop"]
与obj.prop
相同
因此,不是将变量作为变量传递并希望获取其名称,而是使用名称作为字符串来获取变量的值。
如果您没有使用名称空间/变量并希望使用全局/根变量,请传递窗口,例如:
function test(obj, val) {
console.log(val + ": " + obj[val]);
}
var val1 = 1;
var val2 = 2;
test(window, "val1");
test(window, "val2");
(显然你不会得到&#39; obj&#39; - 但也许它不是一个开始)
如果你只有root /全局变量(如问题中提供的例子)那么你可以删除obj:
function test(val) {
console.log(val + ": " + window[val]);
}
var val1 = 1;
var val2 = 2;
test("val1");
test("val2");
答案 3 :(得分:0)
看起来你想要做的事情是这样的:
var argumentName = /([^\s,]+)/g;
// fu is a function
// fu.toString look like: function myFunction (param[, param]*) { code }
function getParamNames(fu) {
var f = fu.toString();
return f.slice(f.indexOf('(')+1,f.indexOf(')')).match(argumentName);
}
然后您可能想要创建一个将执行所有功能的帮助程序:
// I choosed the console as an output, but you can set anything
function displayParameters(fu) {
var _params = getParamNames(fu);
if(_params!==null) {
for(var i=0;i<_params.length; i++) {
console.log(_params[i]);
}
} else { console.log('no parameters'); }
}
而且,您需要致电:displayParameters(test);