Javascript/Jquery - 如何根据变量设置变量名

标签 javascript php jquery wordpress

这个问题之前已经被问过很多次了,但我没明白。

在下面..

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/

相关文章:

php - 创建 Wordpress 子插件

javascript - css/javascript : checking pixels of image where hover effect is triggered

javascript - 如何使用 jQuery 获取该元素的索引?

javascript - 使用 JSON 和 Serializer 返回多个列表

javascript - 单选框的 Jquery 验证

javascript - AngularJS下拉列表第一个值为空

javascript - 无法根据 props 或状态更改更新组件

php - 使用 PHP 和 MySQL 更新数字序列(显示顺序)

php - VideoJS Flash 版本不播放文件(PHP 直通流)

javascript - 将 CSS 类添加到 YADCF Select2 容器