如何创建将窗口居中的函数

How to create a function to center windows

本文关键字:窗口 函数 何创建 创建      更新时间:2023-09-26

我使用的是jqgrid,要集中弹出窗口来添加、删除和编辑,我需要使用参数beforeShowForm,在这个显示窗口之前,它显示屏幕的中心。问题是,我必须始终为这三个函数执行相同的代码。

功能如下:

{ // edit option
  beforeShowForm: function(form) {
    var dlgDiv = $("#editmod" + $(this)[0].id);
    var parentDiv = dlgDiv.parent();
    var dlgWidth = dlgDiv.width();
    var parentWidth = parentDiv.width();
    var dlgHeight = dlgDiv.height();
    var parentHeight = parentDiv.height();
    var parentTop = parentDiv.offset().top;
    var parentLeft = parentDiv.offset().left;
    dlgDiv[0].style.top =  Math.round(parentTop / 2) + "px";
    dlgDiv[0].style.left = Math.round(parentLeft + (parentWidth-dlgWidth  )/2 )  + "px";
  }
},

为了重用相同的代码,我会创建一个单独的函数来始终编写相同数量的代码。我尝试创建以下函数:

功能:

function test(dlgDiv)
{
  var parentDiv = dlgDiv.parent();
  var dlgWidth = dlgDiv.width();
  var parentWidth = parentDiv.width();
  var dlgHeight = dlgDiv.height();
  var parentHeight = parentDiv.height();
  var parentTop = parentDiv.offset().top;
  var parentLeft = parentDiv.offset().left;
  dlgDiv[0].style.top =  Math.round(parentTop / 2) + "px";
  dlgDiv[0].style.left = Math.round(parentLeft + (parentWidth-dlgWidth  )/2 )  + "px";
}

网格中:

{ // edit option
  beforeShowForm: function(form) {
    var dlgDiv = $("#editmod" + $(this)[0].id);
    test(dlgDiv);
  }
},

但是继续没有给予。表示未定义值dlgDiv。有人知道怎么解决这个问题吗?

问题在于您在这里使用的选择器:

var dlgDiv = $("#editmod" + $(this)[0].id);

由于选择器找不到您要获取的任何元素,因此都不会返回。您应该修改选择器以反映您要查找的元素的ID。

如果你已经这样做了,但仍然有问题,问题在于你的上下文,this并不是你认为它在上面代码行中的意思。不过,在我详细说明之前,您必须向我们展示更多的代码。