JavaScript 中有没有办法使用 string+variable 作为变量
is there a way in JavaScript to use string+variable as a variable
我确实尝试这样做(使用jQuery):
type = (blabla == blublu)? 'category':'regular';
(type+'Name').val('...');
这是控制台响应:
未捕获的类型错误:对象类别名称没有方法"val"
虽然它们确实存在...
那么我怎样才能让它工作呢?
编辑:
这是完整的功能:
var type = (1 == 1)?'something':'blabla';
var somethingName = $('#somethingName');
var blablaName = $('#blablaName');
more variables like this..
function itemMode(mode, inputValue){
inputValue = (typeof inputValue !== 'undefined')? inputValue:'';
var functionName = null;
switch(mode){
case 'open':
btnValue = 'something';
functionName = editCategory; // this need to be from type to
openItem = true;
break;
case 'close':
btnValue = 'something';
functionName = addCategory; // this need to be from type to
openItem = false;
break;
default:
return false;
}
(type+'Name').val(inputValue);
$('#btn'+type.capitalize()).off('click').val(btnValue).click(functionName);
(type+'Name').off('keypress').keypress(function(e){enterPress(e,functionName);});
}
我尝试(类型+"名称")对现有 var 或对象的引用。
您的问题不在于串联。这工作正常。你用'Name'
连接type
,得到字符串'categoryName'
。然后,您可以执行以下操作:
('categoryName').val(...);
这与 'categoryName'.val(...)
相同,这显然不起作用,因为字符串没有val
方法。
您正在尝试执行 jQuery 选择,为此您需要 jQuery 构造函数:
$(type+'Name').val('...');
当然,这也不太可能起作用,除非您有标签名称为 categoryName
的元素。大概你实际上想要具有该类的元素:
$('.' + type + 'Name')
或id
:
$('#' + type + 'Name')
或类似的东西。
变量被创建为窗口对象的属性,所以如果它们是全局的,你可以这样做......
window[type + "Name"]
由于您要引用"缓存的"jQuery 对象,请使用以下命令...
(window[type + "Name"]).val("123");
例如,如果您缓存了这样的 jQuery 对象...
var sumVar = $('#sumid');
你可以像这样直接引用它...
sumVar.val("123");
或者你可以使用变量作为名称来引用它,就像这样......
var varName = "sumVar";
(window[varName]).val("123");
这是您在上面发布的脚本的修改版本...
var type = (1 == 1)?'something':'blabla';
window.somethingName = $('#somethingName');
window.blablaName = $('#blablaName');
function itemMode(mode, inputValue){
inputValue = (typeof inputValue !== 'undefined')? inputValue:'';
var functionName = null;
switch(mode){
case 'open':
btnValue = 'something';
functionName = editCategory; // this need to be from type to
openItem = true;
break;
case 'close':
btnValue = 'something';
functionName = addCategory; // this need to be from type to
openItem = false;
break;
default:
return false;
}
(window[type + 'Name']).val(inputValue);
$('#btn' + type.capitalize()).off('click').val(btnValue).click(functionName);
(window[type + 'Name']).off('keypress').keypress(function(e){enterPress(e,functionName);});
}
您可以创建一个函数并使用它的返回值:
演示1 演示2
function type(){
return (blabla == blublu) ? 'category' : 'regular';
}
$('[name="'+ type() +'Name"]').val('SOME VALUE');
如果使用ID
而不是name
属性:
function type(){
return (blabla == blublu) ? '#category' : '#regular';
}
$( type() +'Name').val('SOME VALUE');
或者只是简单地:
var typeID = blabla==blublu? '#category' : '#regular';
$( typeID +'Name').val('SOME VALUE');
val() 是 jquery 提供的方法。因此,要访问它,您需要使用"$"运算符以及选择模式:
var type = (blabla == blublu)? 'category':'regular';
对于使用 ID 访问:
$("#"+type).val("...");
对于使用类访问:
$("."+type).val("...");
用于使用任何自定义属性进行访问,例如。数据 :
$("data['"+type+"']").val("...");
您只能使用对象键安全地执行此操作。
创建一个这样的对象。
var obj = {
'categoryName': ...
};
要检索它,请使用如下内容:
obj[someString]
eval
是一种选择是不明智的。
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 从jQuery调用存储在Variable中的函数
- 如何在MongoDB中将String转换为Array
- how to split a string with ','
- 将Transform和Instance Variable转换为对象的JavaScript数组
- Protractor:element.getText()返回一个对象,而不是String
- 如何在不在本地下载的情况下将url中提供的文件(pdf/doc)转换为json/string/base64格式
- Php variable obj to js
- Javascript 如何强制 string.replace 不将我的字符串解释为正则表达式
- JavaScript警报适用于int,但不适用于string
- javascript/angularjs 将 String 与 number for loop 连接起来
- 将Computed PHP Variable传递到jQuery/Ajax表单
- 如何在Android中将Javascript返回值转换为String
- 如何在javascript中对以下字符串使用string.split()
- jQuery .load with variable as url
- 获取Div Width,然后更新Scope Variable
- No puedo comparar una variable con un cadena de tipo String
- JavaScript 中有没有办法使用 string+variable 作为变量
- jQuery -通配符选择器以w/String开头,以w/Variable结尾
- Angular: Change String to variable