1

最近我遇到了一个我试图理解的场景。我已经找到了解决方法并且我的工作已经完成,但我仍然无法理解为什么会发生这种情况。问题是严格基于编程的,所以我希望它在stackoverflow上是允许的。

我在页面上有一个 Div:

<DIV id="tos3" >
<FONT size=2 face=Arial color=#009a00><B>How to request Business Applications Software </B></FONT>
<BR/><BR/>
<FONT size=2 face=Arial color=#000000>
<select id="segment" onchange="getSecondDropdown(this);"><option value="Segment">Select Segment</option>
  <option value="E&P">E&P</option>
  <option value="R&M">R&M</option>
  <option value="IST">IST</option>
  <option value="Functions">Functions</option>
  <option value="Other">Other</option>
</select>
<select id="DivisionDP" disabled="disabled"  onchange="getDetails();"><option value="Division">Select Division/SPU/Region</option>
</select>
<DIV id="infoDetails"></DIV>
</FONT>
</DIV>

相关的Javascript:

function getSecondDropdown(e)
{
// get the values in seconnd drop down
}
function getDetails()
{
// display details based on selection
}

它在页面上运行良好。然后请求在 Popup 上显示此 div。我们的母版页中有一个弹出代码,通过我们的站点用于显示数据:

 <div id="testDiv" style="border-left:2px solid #99cc00;border-right:2px solid #99cc00;border-top:2px solid #4c4c4c;border-bottom:2px solid #4c4c4c;width:500px;display:none;background-color: #eeeeee;z-index:1000;padding:10px 10px 10px 10px">
<div align="right" style="height:25 px;">
<a style="cursor:pointer" onClick="closePouUp()">close</a>
</div>
<div id="contentDiv" style="overflow:auto;"> testDiv content</div>
 </div>

<div id="greyout" style="background-color: black; display:none;z-index:400;filter: alpha(opacity=70);opacity: 0.7;width:100%;   height:100%;">
</div>

function ShowHideProduct(sValue,flag)
{


var customCopyrightContainer;
customCopyrightContainer = document.getElementById(sValue);
divRef = document.getElementById('testDiv');
innerDiv=document.getElementById('contentDiv');
if(flag==1)
{
innerDiv.style.height = "300px";
}
innerDiv.innerHTML= customCopyrightContainer.innerHTML;
 // Get the screen dimensions...
 var screenSize = getViewportSize();
 var screenWidth = screenSize.width;
 var screenHeight = screenSize.height;


 // Get the element dimensions...
 var elementSize = getElementSize(divRef);
 var elementWidth = elementSize.width;
 var elementHeight = elementSize.height;

// Calculate the centering positions...
 var xPos = (screenWidth - elementWidth) / 2;
 var yPos = (screenHeight - elementHeight) / 2;
 yPos=document.body.scrollTop/2+yPos;
var body = document.body,
    html = document.documentElement;

var height = Math.max( body.scrollHeight, body.offsetHeight, 
                       html.clientHeight, html.scrollHeight, html.offsetHeight );


//make page greyout
greyOutDiv=document.getElementById('greyout');
greyOutDiv.style.position = 'absolute';
greyOutDiv.style.left = '0px';
greyOutDiv.style.top = '0px';
greyOutDiv.style.width = '1500px';
greyOutDiv.style.height = height + 'px';
greyOutDiv.style.display = 'block';



 // Position the element...
 divRef.style.position = 'absolute';
 divRef.style.left = xPos + 'px';
 divRef.style.top = yPos + 'px';
 divRef.style.display = 'block';



if(flag==1)
{
divRef.style.height = "300px";
}
return;
            }

function closePouUp()
{
divRef = document.getElementById('testDiv');
greyOutDiv=document.getElementById('greyout');
divRef.style.display = 'none';
greyOutDiv.style.display = 'none';
}

我使用了相同的代码,但功能不起作用。从输出中我觉得 javasript innerHTML 正在创建一个临时对象。我觉得这是因为第一个下拉列表不适用于 getElementByID 方法,但是当我在它工作的方法中传递它的引用时。

我没有得到任何适当的解释。

我通过将原始 div 显示为弹出窗口来解决我的问题。所以现在我只是想了解到底发生了什么。

4

0 回答 0