通过LocalStorage的两页之间的通过点击事件



我想从第二页中进行单击事件。第1页具有 2nd Page 的链接,有一个按钮单击按钮时,它会添加 html row 上,第1页。我正在尝试将localStorage用于传递数据。我的代码不起作用,以下查看:

1st page.html


html

<div id="content">
</div>

JS

var     output = document.getElementById('content');
addEvent(window, 'storage', function (event) {
  if (event.key == 'StorageName') {
    output.innerHTML = event.newValue;
  }
});

第二页

html

<input id="data" type="button" value="+" onclick="addRow()">

JS

addEvent(dataInput, 'keyup', function () {
localStorage.setItem('StorageName', this.value);
});
var dataInput = dataInput = document.getElementById('data');
object.onclick = function(){
addRow() {
var div = document.createElement('div');
div.className = 'row';
div.innerHTML = '<button>GO</button>';
document.getElementById('content').appendChild(div);
}
};

您尚未正确定义addRow()功能。函数的名称是用关键字function定义的,而不是功能主体内部的。您的代码:

object.onclick = function(){
addRow() {
var div = document.createElement('div');
div.className = 'row';
div.innerHTML = '<button>GO</button>';
document.getElementById('content').appendChild(div);
}
};

应更改为:

function addRow() {
    var div = document.createElement('div');
    div.className = 'row';
    div.innerHTML = '<button>GO</button>';
    document.getElementById('content').appendChild(div);
}
object.onclick = addRow;

我同意Skyline3000的答案addrow()。另外,还有其他一些可能/应该改变的事情:

  • 在将事件附加到它之前定义数据
  • object.onclick应为datainput.onclick,因为那是单击的元素。(点击事件您真正想要什么?也许Onkeyup?)
  • 设置LocalStorage时,您要将要传递给第1页的函数定义设置为Addrow()。只需删除括号以通过定义即可。(也应该在使用之前定义)
  • 如果您只想通过该功能,则不应该在第2页上设置ONCLICK事件。
  • 如果不更改功能,则无需每次传递该功能;只需设置一次并记录单击的次数即可。
  • 第1页可以捕获加载事件和检查局部记录的功能定义和运行次数的次数。然后它可以循环并执行功能。
  • 如果您要查找的内容,则您已经没有将链接添加回第2页,但是当您知道文件名和路径时,您可以将其添加到addrow函数中。

第1页

var output = document.getElementById('content');
addEvent(window, 'load', function (event) {
  if (localStorage.getItem('StorageName') && localStorage.getItem('rowsToAdd')) {
    for(var i = 0; i > rowsToAdd;i++){
      var addNewRow = localStorage.getItem('StorageName');
      addNewRow();
     }
  }
});

第2页

var dataInput = document.getElementById('data');
function addRow() {
    var div = document.createElement('div');
    div.className = 'row';
    div.innerHTML = '<button>GO</button>';
    document.getElementById('content').appendChild(div);
};
localStorage.setItem('StorageName', addRow);
dataInput.onclick = function() {
    if(localStorage.getItem('rowsToAdd')){
        localStorage.setItem('rowsToAdd', localStorage.getItem('rowsToAdd') + 1); 
    }else{
        localStorage.setItem('rowsToAdd',1);
    }
}

我没有测试此代码,因此它可能无法使用副本 粘贴,但希望很接近。

我还以最好的理解对您想要的东西做出了最好的理解,但我没有完全看到您似乎正在做的事情的理想结果。