2个或更多函数无法在Javascript中执行

时间:2016-10-03 14:35:44

标签: javascript jquery html function iframe

我有产品网格,每个产品调用javascript,其唯一ID用于打开iframe窗口。 在调用第一个时它可以正常工作但在调用第二个时它什么都不做。 我将有大约20种产品需要调用该脚本。

我希望如果可以调用第二个iframe,第一个关闭,第二个关闭,等等。

这是脚本:

function init() {

  test = true;

  document.getElementById('go<?php echo $product['product_id']; ?>').onclick = function() {
    ifr = document.createElement('iframe');
    ifr.setAttribute('src', this.href);
    ifr.src = this.href;
    ifr.setAttribute('id', 'iframe_a<?php echo $product['product_id']; ?>');

    if (test == true) {
      ifr.onreadystatechange = function() {
        if (this.readyState == 'complete<?php echo $product['product_id']; ?>') {}
      }
      document.getElementById('iframe_a_container<?php echo $product['product_id']; ?>').appendChild(ifr);
      test = false;
    }
    return false;
  }
}

window.addEventListener ?
  window.addEventListener('load', init, false) :
  window.attachEvent('onload', init);

Iframe代码:

<div id="iframe_a_container<?php echo $product['product_id']; ?>">  </div>

和按钮代码:

<a id="go<?php echo $product['product_id']; ?>" href="index.php?route=product/quickview&amp;product_id=<?php echo $product['product_id']; ?>">Quick View</a>

1 个答案:

答案 0 :(得分:0)

我假设您之前(在onclick之外)声明了ifr;如果没有,你应该这样做(所以你有一个参考来访问它)并尝试这个修改过的onclick工作:

document.getElementById('go<?php echo $product['product_id']; ?>').onclick = function() {
    $(ifr).remove(); // Remove it from the screen
    ifr = null;
    ifr = document.createElement('iframe');
    ifr.setAttribute('src', this.href);
    ifr.src = this.href;
    ifr.setAttribute('id', 'iframe_a<?php echo $product['product_id']; ?>');

    if (test == true) {
      ifr.onreadystatechange = function() {
        if (this.readyState == 'complete<?php echo $product['product_id']; ?>') {}
      }
      document.getElementById('iframe_a_container<?php echo $product['product_id']; ?>').appendChild(ifr);
      test = false;
    }
    return false;
  }