Javascript 在JS中创建动态变量名
我该怎么做?我不能或更确切地说不想使用Javascript 在JS中创建动态变量名,javascript,jquery,Javascript,Jquery,我该怎么做?我不能或更确切地说不想使用window[]或scope[] 因为这三个变量都是几何体字段,所以最好使用一个对象而不是三个独立变量: var $geometryPointFields = $('[class*="Point"]', $panel), $geometryLineFields = $('[class*="Line"]', $panel), $geometryPolygonFields = $('[class*="Polygon"]', $panel); f
window[]
或scope[]
因为这三个变量都是几何体字段,所以最好使用一个对象而不是三个独立变量:
var $geometryPointFields = $('[class*="Point"]', $panel),
$geometryLineFields = $('[class*="Line"]', $panel),
$geometryPolygonFields = $('[class*="Polygon"]', $panel);
function(geometry) {
// geomtery is either Point, Line or Polygon
${'geometry'+geometry+'Fields'}.show() // ?
}
然后,您可以使用几何体
字符串访问对象的属性:
const geometryFields = {
Point: $('[class*="Point"]', $panel),
Line: $('[class*="Line"]', $panel),
Polygon: $('[class*="Polygon"]', $panel)
};
如果必须使用独立变量,可以eval
,但实际上不应该eval
:
$geometryPointFields=$('.point');
函数showGeom(classStr){
eval(“$geometry”+classStr+”字段”).show();
}
setTimeout(()=>showGeom('Point'),1500)代码>
.point{display:none}
点
因为这三个变量都是几何体字段,所以最好使用对象而不是三个独立变量:
var $geometryPointFields = $('[class*="Point"]', $panel),
$geometryLineFields = $('[class*="Line"]', $panel),
$geometryPolygonFields = $('[class*="Polygon"]', $panel);
function(geometry) {
// geomtery is either Point, Line or Polygon
${'geometry'+geometry+'Fields'}.show() // ?
}
然后,您可以使用几何体
字符串访问对象的属性:
const geometryFields = {
Point: $('[class*="Point"]', $panel),
Line: $('[class*="Line"]', $panel),
Polygon: $('[class*="Polygon"]', $panel)
};
如果必须使用独立变量,可以eval
,但实际上不应该eval
:
$geometryPointFields=$('.point');
函数showGeom(classStr){
eval(“$geometry”+classStr+”字段”).show();
}
setTimeout(()=>showGeom('Point'),1500)代码>
.point{display:none}
点
您的变量是使用jQuery选择器的响应形成的。为什么不直接在函数中选择并显示元素
function showGeom(classStr) {
geometryFields[classStr].show();
}
您只需确保在该函数中可以访问$panel
,并且它应该可以正常工作。您的变量是使用jQuery选择器的响应形成的。为什么不直接在函数中选择并显示元素
function showGeom(classStr) {
geometryFields[classStr].show();
}
您只需确保此函数可以访问$panel
,并且它应该可以正常工作。几何图形是字符串吗?@CertainPerformance是字符串。所以,$('geometry'+geometry+'Fields')
?@Xufox Yea,我不知道,所以就为这个例子编了一个。可能是重复的。您永远不需要或想要未知的变量名。请改用对象:const geometry={$geometryPointFields:$('[class*=“Point”],$panel),$geometryLineFields:$('[class*=“Line”],$panel),
…};log(几何图形[“几何图形”+几何图形+“字段”].show())代码>。另外:.几何体
是字符串吗?@CertainPerformance是,是字符串。所以,$('geometry'+geometry+'Fields')
?@Xufox Yea,我不知道,所以就为这个例子编了一个。可能是重复的。您永远不需要或想要未知的变量名。请改用对象:const geometry={$geometryPointFields:$('[class*=“Point”],$panel),$geometryLineFields:$('[class*=“Line”],$panel),
…};log(几何图形[“几何图形”+几何图形+“字段”].show())代码>。另外:。它是适当的。它是适当的。