Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Window.open,检查是否有相同的div内容_Javascript_Html - Fatal编程技术网

Javascript Window.open,检查是否有相同的div内容

Javascript Window.open,检查是否有相同的div内容,javascript,html,Javascript,Html,我想创建一个包含以下内容的弹出窗口: 当用户单击显示div 1内容的div 1时打开弹出窗口 若弹出窗口中已经存在div 1的内容,并且用户单击div 1,则不执行任何操作 当用户单击div2时,清除弹出窗口并显示div2的内容 我尝试了以下方法,但条件语句始终为true,因为新弹出窗口始终包含单击的div的内容 你能给我一些建议吗 最好使用纯javascript HTML: 删除if语句之前的returnfalse。返回立即退出函数,之后的任何代码都不会运行 JSFiddle: 谢谢。但是

我想创建一个包含以下内容的弹出窗口:

  • 当用户单击显示div 1内容的div 1时打开弹出窗口
  • 若弹出窗口中已经存在div 1的内容,并且用户单击div 1,则不执行任何操作
  • 当用户单击div2时,清除弹出窗口并显示div2的内容
我尝试了以下方法,但条件语句始终为true,因为新弹出窗口始终包含单击的div的内容

你能给我一些建议吗

最好使用纯javascript

HTML:


删除
if
语句之前的
returnfalse
。返回立即退出函数,之后的任何代码都不会运行

JSFiddle:

谢谢。但是当我说“什么也不做”时,如果弹出窗口中存在div1内容,我的意思是div1不应该是可点击的,所以多次点击div1应该失败。(即弹出窗口不应刷新,父窗口将覆盖弹出窗口)

您应该在尝试打开弹出窗口之前进行检查


jsidle:

除了返回false之外,您还将首先将div的值赋给window,然后进行检查,这当然会始终返回true

function basicPopup(url,t1) {
  popupWindow = window.open(url,'popUpWindow','height=500,width=500,left=100,top=100, resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes'); 

  if(popupWindow.document.body.innerHTML==t1.innerHTML){
    return false; //if equal do nothing
  }
  else {
    popupWindow.document.body.innerHTML='';
    popupWindow.document.write(t1.innerHTML);
  }
}
我删除了以下两项:

popupWindow.document.body.innerHTML = t1.innerHTML;
return false; //make sure parent window doesn't refresh
更新: 事实上,我们在这里想得太多了。仅指定新值似乎也会执行相同的操作,只是每次都会填充内容:

function basicPopup(url,t1) {
  popupWindow = window.open(url,'popUpWindow','height=500,width=500,left=100,top=100, resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes'); 
  popupWindow.document.body.innerHTML = t1.innerHTML;    
}

在IFs之前,返回值为false。返回后不会发生任何事情。我知道您编写的最后一段代码,但它总是在不检查内容的情况下加载弹出窗口。我想明确地说,如果弹出内容等于单击的内容,那么什么也不做(即div将不可点击,弹出窗口将位于父窗口下方),这正是第一块代码所做的。仅当尚未分配时才分配。你所做的是首先盲目地分配,然后用分配的数据检查分配的数据,这总是正确的。放弃第二个块(更新的),然后尝试我的代码的第一个块。谢谢。但是当我说“什么也不做”时,如果弹出窗口中存在div1内容,我的意思是div1不应该是可点击的,所以多次点击div1应该失败。(即弹出窗口不应刷新,父窗口将覆盖弹出窗口)@AA我已为此添加了一个解决方案。
function basicPopup(url,t1) {
  popupWindow = window.open(url,'popUpWindow','height=500,width=500,left=100,top=100, resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes'); 

  if(popupWindow.document.body.innerHTML==t1.innerHTML){
    return false; //if equal do nothing
  }
  else {
    popupWindow.document.body.innerHTML='';
    popupWindow.document.write(t1.innerHTML);
  }
}
popupWindow.document.body.innerHTML = t1.innerHTML;
return false; //make sure parent window doesn't refresh
function basicPopup(url,t1) {
  popupWindow = window.open(url,'popUpWindow','height=500,width=500,left=100,top=100, resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes'); 
  popupWindow.document.body.innerHTML = t1.innerHTML;    
}