Javascript/Jquery-如何基于变量设置变量名
这已经被问了很多次了,但我不明白 在下面Javascript/Jquery-如何基于变量设置变量名,javascript,php,jquery,wordpress,Javascript,Php,Jquery,Wordpress,这已经被问了很多次了,但我不明白 在下面 var variableName = "hello"; 如何基于另一个变量生成变量名“variableName” PHP示例 $a = 'hello'; $$a = 'hi'; // same as $hello.. echo $hello; // and $hello outputs 'hi' 我特别需要将此变量用于本地存储,因此可能是语法问题 我使用它的目的是什么(你可能会跳到这似乎很有效) 我想生成一个唯一的变量名,用于将信息存储在本地存储
var variableName = "hello";
如何基于另一个变量生成变量名“variableName”
PHP示例
$a = 'hello';
$$a = 'hi'; // same as $hello..
echo $hello; // and $hello outputs 'hi'
我特别需要将此变量用于本地存储,因此可能是语法问题
我使用它的目的是什么(你可能会跳到这似乎很有效)
我想生成一个唯一的变量名,用于将信息存储在本地存储器中。变量名将基于我用php检索的wordpress帖子/页面的帖子id 例如,我们会说post id是3333
var postIdNumber = 'id3333';
我将字母id添加到每个帖子id的开头
所以现在我有了id3333
var postIdNumber = 'id3333';
然后我得到了另外3条关于这篇文章的信息,我想将它们存储到本地存储器中(为了简单起见,我展示了一个示例输出,而不是获取它的代码)
现在我想将这些信息存储到本地存储器中
var lsTest = { 'lsURL': postURL, 'lsTitle': postTitle, 'lsThumb': postThumb };
localStorage.setItem('lsTest', JSON.stringify(lsTest));
那很好。除了我希望能够将多篇文章存储到本地存储中,以便以后从“我最喜欢的文章”页面检索
所以我需要一个动态变量名
- 对于post ID 3333,我需要将当前命名为lsTest的变量命名为id3333
- 对于post ID 4444,我需要将当前命名为lsTest的变量命名为id4444
var variableVariable = {} // also, should this have a ';' ?
variableVariable.postNumber = 'id3333';
var vv = 'postNumber';
var variableVariable[vv] = { 'lsURL': postURL, 'lsTitle': postTitle, 'lsThumb': postThumb };
localStorage.setItem('variableVariable[vv]', JSON.stringify(variableVariable[vv]));
在PHP中,我可能会做这样的事情。。(例如,我将php变量混合到JS中)
您只需要创建一个对象对象对象,用唯一的post id进行键控。然后,您需要在存储对象之前对其进行字符串化,并在检索对象时对其进行解析
function saveObject(key, object) {
object = JSON.stringify(object);
window.localStorage.setItem(key, object);
}
function getSavedObject(key) {
var saved = window.localStorage.getItem(key);
if (saved) {
return JSON.parse(saved);
} else {
return null;
}
}
你的目标:
var lsTest = {
id3333: {
postUrl: postUrl1,
postTitle: postTitle1,
postThumb: postThumb1,
},
id4444: {
postUrl: postUrl2,
postTitle: postTitle2,
postThumb: postThumb2,
}
}
存储它:
saveObject('myUniqueSiteName', lsTest);
检索它:
var lsTest = getSavedObject('myUniqueSiteName');
增加一个新职位:
var lsTest = getSavedObject('myUniqueSiteName');
var postId = 'id555';
lsTest[postId] = {
postUrl: postUrl3,
postTitle: postTitle3,
postThumb: postThumb3,
}
saveObject('myUniqueSiteName', lsTest);
即使在PHP中,变量也不是一个好主意。只需创建一个数组或散列(这是一个对象,但它用作散列或映射,您可以在其中随意添加和删除属性或条目) 可以通过如下方式访问名为“bar”的对象上名为“foo”的属性:
bar.foo = 'baz';
console.log(bar.foo);
或者像这样:
bar['foo'] = 'baz';
console.log(bar['foo']);
这与:
var name = 'foo';
bar[name] = 'baz';
console.log(bar[name]);
最后,JavaScript中的全局对象(在浏览器中是窗口
)“保存”全局变量
var myGlobal = 10;
console.log(window.myGlobal); // logs 10
var globalName = 'foo';
window[globalName] = 'baz';
console.log(foo); //logs 'baz'
一般不鼓励使用全局变量。使用它们来存储VAR的名称是ID的帖子是非常非正统的,许多JS开发人员会认为它是简单错误的。谢谢,我能够马上得到这个工作,并且理解PHP变量变量的方式。非常感谢详细的答案。当我将代码应用到本地存储测试脚本中时,我能够修改您的代码,并从中学到了很多东西
bar['foo'] = 'baz';
console.log(bar['foo']);
var name = 'foo';
bar[name] = 'baz';
console.log(bar[name]);
var myGlobal = 10;
console.log(window.myGlobal); // logs 10
var globalName = 'foo';
window[globalName] = 'baz';
console.log(foo); //logs 'baz'