如何通过javascript

时间:2017-11-12 18:38:45

标签: javascript

当用户点击按钮时,我正在启动一个html页面。我需要能够将一个地址数组传递给新窗口,以便我可以将它们加载到表中,但是我无法找到任何方法将数组传递到新窗口。

我最近的尝试如下:

<button onclick="openWindow(['Joe Smith\n1 Address\nCity 12345',
  'Joe Smith\n2 Address\nCity 12345'])">Button</button>

function openWindow(addresses){
   var myWindow = window.open("NewPage.html");
   myWindow.addresses = addresses;
}

然后在NewPage.html中我得到了:

<script type="text/javascript">
   function bodyLoaded() { //gets called when the body loads
      var addresses;
      alert(addresses);
   }
</script>

我总是在新窗口的警报中未定义。如果我在openWindow()函数中设置警报,我确实确认我正在获取地址。

我还尝试过其他一些事情,包括使用localStorage(How to pass an array to a new page using javascript?),但我不知道我是否正确地做了。我也尝试执行函数从openWindow函数加载新窗口上的表(传入地址变量),但我不断收到错误说&#34;错误:对象不支持属性或方法&#34; 。例如:

function openWindow(addresses){
   var myWindow = window.open("NewPage.html");
   myWindow.loadTable(addresses); //the loadTable function exists in a .js file
}

理想情况下,我只想将一个数组传递到新窗口,但我已经暂时停留了一段时间。任何帮助或建议将不胜感激。

2 个答案:

答案 0 :(得分:3)

一种可能性是将params数组作为url中的查询传递。所以像这样:

var myWindow = window.open("NewPage.html?addresses[0]=Joe Smith\n1 Address\nCity 12345&addresses[1]=Joe Smith\n2 Address\nCity 12345");

然后在javascript中使用此功能

<script type="text/javascript">
   function bodyLoaded() { //gets called when the body loads
      var urlParams = new URLSearchParams(window.location.search);

      var addresses = urlParams.get('addresses'));
      alert(addresses);
   }
</script>

编辑:

localstorage也根据这个答案工作:(How to pass an array to a new page using javascript?

window.localStorage.setItem("cart", JSON.stringify(cart)); // Saving
var cart = JSON.parse(window.localStorage.getItem("cart")); // Retrieving

答案 1 :(得分:2)

新窗口由代码打开,因此代码可以控制该窗口。尝试这样的事情。

function openWindow(addresses) {
  var myWindow = window.open("newpage.html");
  myWindow.onload = function() {
    var myDiv = this.document.createElement('div');
    this.document.body.appendChild(myDiv);
    for (var i = 0, a; a = addresses[i]; ++i) {
      myDiv.innerHTML += a;
    }
  }
}