Javascript 使用时如何显示Div显示:无

Javascript 使用时如何显示Div显示:无,javascript,jquery,css,asp.net,ajax,Javascript,Jquery,Css,Asp.net,Ajax,我使用display:none隐藏了一个基于ajax方法响应的。如果我想在另一次调用AJAX方法时显示相同的,该怎么办 我想知道display:none是否确实从DOM中删除了元素,因为使用display:block不会使再次可见。如何使用display属性显示和隐藏同一个div。下面是我用于AJAX调用的代码: $.ajax({ type: "POST", url: "Request.aspx/FireEvents", data: JSON.stringify({ controlV

我使用
display:none
隐藏了一个基于ajax方法响应的
。如果我想在另一次调用AJAX方法时显示相同的
,该怎么办

我想知道
display:none
是否确实从DOM中删除了元素,因为使用
display:block
不会使
再次可见。如何使用
display
属性显示和隐藏同一个div。下面是我用于AJAX调用的代码:

$.ajax({
  type: "POST",
  url: "Request.aspx/FireEvents",
  data: JSON.stringify({ controlValues: pageControlNamesAndValues }),
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (response) {
    var controlVals = response.d;
    $.each(controlVals, function (index, currentControl) {
      var targetDropDown = document.getElementById(ctrlName);
      console.log('Targetdropdown is ' + targetDropDown);
      if (targetDropDown != null) {
        if (targetDropDown instanceof HTMLDivElement) {
          if (currentControl.ControlName == "LogicChecks") {
            if (currentControl.ControlValue = "hidden") {
              targetDropDown.style.display = 'none';
            } else {
              targetDropDown.style.display = 'block';
            }
          }
        }
      }
    });
  }
});

最后一行(
…style.display='block';
)隐藏后不会显示

下面是一个工作示例。确保您正在正确访问元素


#myDIV{
宽度:500px;
高度:500px;
背景颜色:浅蓝色;
显示:无;
}
单击“尝试”按钮,将DIV元素的显示属性设置为“块”:

试试看 这是我的DIV元素。 注意:当“显示”属性设置为“无”时,元素不会占用任何空间

函数myFunction(){ document.getElementById(“myDIV”).style.display=“block”; }
使用jQuery显示和隐藏:

$("#"+ ctrlName).show() 
$("#"+ ctrlName).hide()
还可以使用
==
测试是否相等<代码>=是分配 此语句不是测试隐藏,而是指定隐藏

if(currentControl.ControlValue="hidden") 
最后

var targetDropDown = document.getElementById(ctrlName); 
if (targetDropDown == null) { targetDropDown = 
  document.getElementById(ctrlName); }
没有逻辑意义

也许这就是你的意思

函数处理事件选项(pageControlNamesAndValues){
$.ajax({
类型:“POST”,
url:“Request.aspx/firevents”,
数据:JSON.stringify({
controlValues:PageControlNames和Values
}),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(响应){
var controlVals=响应.d;
$.each(控制变量、函数(索引、当前控制){
if(currentControl.ControlName==“LogicChecks”){
targetDropDown=$(“#”+currentControl.controlDiv);//或任何名称
targetDropdown.toggle(currentControl.ControlValue!=“hidden”);//如果未隐藏则显示
}
});
});
});
}

正如评论中所讨论的和Matt的回答中所演示的,显示/隐藏元素的方法是正确的,即

element.style.display = "block";
即使在通过应用
display:none
将其隐藏后,其行为仍与您预期的一样。下面是一个使用jQuery的示例(因为这是一个jQuery问题):

$(“#click1”)。单击(函数(){$(“#el”)。隐藏();});
$(“#click2”).click(function(){$(“#el”).show();})

看得见的
单击以隐藏

单击以显示
是否可以确认调用了
成功功能?你能确认找到了元素吗?您可以使用javascript调试控制台(在任何主要浏览器中)测试代码行,看看它们是否对DOM有任何影响<代码>显示:无不会从DOM中删除元素。现在就使用jQuery
$(“#”+ctrlName).show()
$(“#”+ctrlName).hide()
假设您在某个地方有ctrlName(我看不到它)。是的,总是执行success方法。是,元素将在初始页面加载时找到。但是基于这个ajax响应,我们需要隐藏并显示一些div,这毫无意义:
var targetDropDown=document.getElementById(ctrlName);如果(targetDropDown==null){targetDropDown=document.getElementById(ctrlName);}
如果在
targetDropDown
变量中有一个元素,那么
targetDropDown.style.display='block'确实应该确保它被显示,因为它本质上将其内联样式(覆盖类等)设置为
display:block
…所以问题很可能是您的脚本是否达到了发生这种情况的那一行–您是否尝试过在显示器设置为阻止之前进行控制台日志记录调用?这到底是对上述问题的回答吗?这实际上显示了div。但我需要在它隐藏后将其取回,同时也是在Op遇到困难时在他自己的代码中理解jQuery。因此,他使用jQuery.show、hide、toggle在我看来比ES6更有用,因为ES6甚至不兼容Babel@mplungjan演示仅用于演示目的,但是的,我可能会将其更改为jQuery以避免混淆。@我知道,但可能需要演示以说服OP。