使用 JavaScript 在单击事件时将 div 从一个页面移动到另一个页面

问题描述 投票:0回答:1

我有一个包含多个 div 的页面,每个 div 都有一张猫的照片以及一些文本和其他信息(用于猫收养机构页面)。每个 div 都有一个 onclick,它调用 JavaScript 函数,然后转移到不同的页面(从有很多猫的页面到只有一只猫的页面)。

我尝试了多种方法将点击的div移动到新页面但仍然不成功。我目前正在进行 2 个调用,其中一个是当用户单击 cat pic 时,这会将 div 保存到本地存储,然后当加载新页面时,会调用第二个函数来尝试读取该 div 并将其附加到新页面中。这是相关的代码片段。

function loadCatProfile() {
  var cat = localStorage.getItem("catProfile");
  var mydoc = document.getElementById("placeholder");

  mydoc.append(cat);
}

function saveCatProfile(profile) {
  localStorage.setItem("catProfile", profile);
  window.location.href = "/singlecat.html";
}

用户点击的多猫页面....

<!DOCTYPE html>
<html>
  <head>
    <script src="/core/jscript.js"></script>
  </head>

  <body>
    <div class="profile" onclick="saveCatProfile(this)" style="cursor: pointer">
      <img src="/images/martin.webp" < />
      <p>Martin</p>
      <p>8 meses</p>
    </div>

    <div class="profile" onclick="saveCatProfile(this)" style="cursor: pointer">
      <img class="cat-image" src="/images/vimes.webp" < />
      <p id="cat-name">Sir Vimes</p>
      <p class="cat-age">8 meses</p>
    </div>
  </body>
</html>

尝试阅读的新单猫页面


<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <script src="/core/jscript.js"></script>
  </head>

  <body>
    <main>
      <div id="placeholder">
        <p>test</p>
      </div>
    </main>

    <script>
      loadCatProfile();
    </script>
  </body>
</html>

尝试保存然后将保存的数据分配给目标页面的innerHTML,尝试将保存的div附加为子项,阅读了太多接近帮助但不成功的网页。这是一个纯 html/css javascript 网站,没有框架或其他库。

javascript html dom data-transfer-objects
1个回答
0
投票

将单击的 div 保存到 localStorage 的方法可以工作,但问题在于如何检索元素。当您将整个 div 保存到 localStorage 时,它会存储为字符串。然而,直接附加这个字符串是行不通的,因为它不是一个 DOM 元素。

所以基本上你需要将div的内部HTML保存到localStorage,然后 在目标页面上重建它。

当您将项目设置/保存到本地存储时,您需要保存内部 HTML 而不是 div。

function saveCatProfile(profile) {
  localStorage.setItem("catProfile", profile.innerHTML);
  window.location.href = "/singlecat.html"; 
}

之后,您可以通过创建此类函数来访问已保存的组件。

    function loadCatProfile() {
      var anyName= localStorage.getItem("catProfile");

if(anyName)
{

}
else
{

}}
© www.soinside.com 2019 - 2024. All rights reserved.