我遇到了一个有趣的情况,我想知道这是一个非常简单的解决方案(换句话说,一个有经验的开发人员将如何处理这个问题)。JS - 一种在迭代中获取变量值而不是引用的方法?
for(i = Math.min(storedAry.length,3)-1; i >=0; i--){
var currentElementName = storedAry[i][1];
var currentElementID = storedAry[i][0];
var window_location = `BusTracking.html?id=${currentElementID}&name=${currentElementName}`;
document.getElementById('recents').innerHTML+=`<button type="button" class="btn btn-success" style='margin-bottom:20px;' onclick="window.location = window_location">${currentElementName}</button><br/>`;
}
我遍历一个数组,并设置按钮重定向到相应的URL点击。但是,这个脚本会设置window.location = window_location
,这是在用户点击按钮时进行评估的,所以无论点击哪个按钮,它都会使用户进入页面点击时的值(这里是window_location
的值)循环的最后一次迭代)。
我在想如何强制每次运行for循环时评估这个变量。当访问window_location
时,可能的解决方案可能是访问数组,但我觉得应该有一种“类似于PHP”的方式来执行此操作。
不是当您使用内联事件处理程序。 'window.location = window_location'在全局范围内进行评估,并且只能有一个全局'window_location'变量。 –
@FelixKling,所以在每次迭代时都没有办法展开'window_location'?例如,Mathematica具有“Evaluate”函数来完成此操作。 – rb612
那么,一种解决方案是在按钮被点击但迭代期间不评估'window_location'。您可以对其他变量执行完全相同的操作:将它们的值嵌入模板文字中:'\'... onclick =“window.location ='$ {window_location}'”... \''。现在当任何按钮被点击时,'window.location ='BusTracking.html?...''被执行。 –