You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于p5.js实现JSON元素切换及localStorage存储功能

解决方案(基于p5.js原生实现)

我来帮你搞定这个需求,完全用p5.js原生写法,结合localStorage和toggle逻辑来实现,咱们一步步来:

1. 初始化数据与状态

首先补全你的JSON数据结构,确保包含需要的knows字段,同时定义状态变量来控制显示状态和存储目标名字——页面加载时会优先从localStorage读取之前保存的值,没有的话就用数据里的默认值:

// 你的JSON数据,补充knows字段
const data = {
  "persons": [
    { 
      "name": "Angie", 
      "link": "#",
      "knows": "Angela" // 要显示的目标名字
    }
  ]
};

// 状态变量:控制名字是否显示,从localStorage读取初始状态
let showKnownName = localStorage.getItem('showKnownName') === 'true';
// 存储要显示的名字,优先取localStorage的缓存,没有就用数据默认值
let knownName = localStorage.getItem('knownName') || data.persons[0].knows;

2. 创建按钮与绑定Toggle交互

在p5.js的setup()函数里创建「Prev」按钮,点击时切换显示状态,同时把状态和名字同步到localStorage,确保页面跳转后不会丢失:

function setup() {
  createCanvas(600, 200);
  
  // 创建Prev按钮并设置位置
  const prevBtn = createButton('Prev');
  prevBtn.position(20, 20);
  
  // 绑定点击事件,实现toggle逻辑
  prevBtn.mousePressed(() => {
    // 切换显示状态
    showKnownName = !showKnownName;
    // 同步状态和名字到localStorage
    localStorage.setItem('showKnownName', showKnownName);
    localStorage.setItem('knownName', knownName);
  });
}

3. 渲染文本(控制显示位置)

在draw()函数里,按照要求把目标名字渲染在「Angie」和「Menu」之间,根据toggle状态决定是否显示:

function draw() {
  background(240);
  
  textSize(18);
  fill(0);
  
  // 固定显示的「Angie」文本
  text('Angie', 100, 50);
  
  // 根据toggle状态显示/隐藏目标名字
  if (showKnownName) {
    text(knownName, 180, 50); // 精准放在Angie和Menu之间
  }
  
  // 固定显示的「Menu」文本
  text('Menu', 260, 50);
}

额外说明

  • 每次点击「Prev」按钮都会切换名字的显示/隐藏状态,同时自动把状态和名字保存到localStorage,页面刷新或跳转后会自动恢复之前的状态。
  • 如果需要切换显示其他名字(比如从Angela换成其他人),只需要修改knownName变量的值,再调用localStorage.setItem('knownName', 新名字)同步即可。
  • 全程用p5.js原生API实现,没有依赖jQuery,完全符合你的要求。

内容的提问来源于stack exchange,提问作者Basch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:27:41