这个问题之前已经被问过很多次了,但我没明白。
在下面..
var variableName = "hello";
如何根据另一个变量创建变量名称“variableName”?
PHP 示例
$a = 'hello';
$$a = 'hi'; // same as $hello..
echo $hello; // and $hello outputs 'hi'
我特别需要这个变量用于本地存储,所以它可能是我遇到问题的语法。
我用它做什么(您可能可以跳到这似乎可行)
我想生成一个唯一的变量名称,用于在本地存储中存储信息。变量名称将基于我使用 php 检索的 WordPress 帖子/页面的帖子 ID。
例如,我们会说帖子 ID 是 3333
我将字母 id 添加到每个帖子 ID 的开头
所以现在我有id3333
var postIdNumber = 'id3333';
然后我得到了另外 3 条信息,我想将它们存储到关于这篇文章的本地存储中(为简单起见,我显示了示例输出,而不是获取它的代码)
var postURL = 'website.comm/a-wp-post/';
var postTitle = 'A Wordpress Post';
var postThumb = 'website.comm/images/thumb3333.jpg';
现在我想将此信息存储到本地存储中
var lsTest = { 'lsURL': postURL, 'lsTitle': postTitle, 'lsThumb': postThumb };
localStorage.setItem('lsTest', JSON.stringify(lsTest));
效果很好。除了我希望能够将多个帖子存储到本地存储中,以便稍后从“我最喜欢的帖子”页面检索。
所以我需要一个动态变量名称。
- 对于帖子 ID 3333,我需要将当前名为 lsTest 的变量命名为 id3333
- 对于帖子 ID 4444,我需要将当前名为 lsTest 的变量命名为 id4444
这似乎有效(虽然我不完全理解) 解决方案修改自https://stackoverflow.com/a/5187652/3377049
var variableVariable = {}
variableVariable.postNumber = 'id3333';
var vv = 'postNumber';
jQuery('.test-div').text(variableVariable[vv]); // outputs id3333
虽然这不是..
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 中)
$uv = 'id3333';
$$uv = { 'lsURL': postURL, 'lsTitle': postTitle, 'lsThumb': postThumb };
localStorage.setItem('$$uv', JSON.stringify($$uv));
最佳答案
您只需要创建一个对象的对象,并锁定唯一的帖子 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);
关于Javascript/Jquery - 如何根据变量设置变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38492376/