GVKun编程网logo

为什么通过 javascript 访问时 div 的初始状态没有值?(javascript访问dom)

16

如果您想了解为什么通过javascript访问时div的初始状态没有值?和javascript访问dom的知识,那么本篇文章将是您的不二之选。我们将深入剖析为什么通过javascript访问时div的

如果您想了解为什么通过 javascript 访问时 div 的初始状态没有值?javascript访问dom的知识,那么本篇文章将是您的不二之选。我们将深入剖析为什么通过 javascript 访问时 div 的初始状态没有值?的各个方面,并为您解答javascript访问dom的疑在这篇文章中,我们将为您介绍为什么通过 javascript 访问时 div 的初始状态没有值?的相关知识,同时也会详细的解释javascript访问dom的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

为什么通过 javascript 访问时 div 的初始状态没有值?(javascript访问dom)

为什么通过 javascript 访问时 div 的初始状态没有值?(javascript访问dom)

如何解决为什么通过 javascript 访问时 div 的初始状态没有值??

<!DOCTYPE html>
<html>
  <head>
    <Meta name="viewport" content="width=device-width,initial-scale=1">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <style>
      body {
      color: white;
      background-color: #1E1B1B;
      border-color: grey;
      }
      .navbar {
      height: 50px;
      border-bottom: 2px solid grey;
      margin-bottom: 10px;
      display: block;
      }
      button.nav-btn {
      float:right;
      background-color: transparent;
      border: 1px solid grey;
      color: white;
      padding: 5px 12px;
      font-size: 30px;
      cursor: pointer;
      float: left;
      }
    </style>
    <script>
          function toggletoolNav() {
          var dis = document.getElementsByClassName("navbar")[0]
          alert(dis.style.display)
          }
    </script>
  </head>

  <body>
    <div>
      <buttononclick="toggletoolNav()"><i></i></button>
    </div>
  </body>
</html>

当按下左上角按钮时,警告弹出框不打印任何内容,表明 navbar 没有显示。但 navbar 是一个 div 元素,在 CSS 代码中显式设置了 display = block

解决方法

您没有返回值,因为 style 属性在此实例中不包含任何值。例如,如果我们将 display: block 作为 style 属性(如 )移动到元素,那么它会像您期望的那样返回值。请参阅提供的示例,但行为是预期的。

希望这会有所帮助,加油!

PS - 默认情况下,div 是块元素,无需在 css 中定义它,除非您出于任何原因覆盖默认值。

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <style>
      body {
      color: white;
      background-color: #1E1B1B;
      border-color: grey;
      }
      .navbar {
      height: 50px;
      border-bottom: 2px solid grey;
      margin-bottom: 10px;
      }
      button.nav-btn {
      float:right;
      background-color: transparent;
      border: 1px solid grey;
      color: white;
      padding: 5px 12px;
      font-size: 30px;
      cursor: pointer;
      float: left;
      }
    </style>
    <script>
          function toggleToolNav() {
          var dis = document.getElementsByClassName("navbar")[0];
          console.log(dis);
          alert(dis.style.display);
          }
    </script>
  </head>

  <body>
    <div>
      <buttononclick="toggleToolNav()"><i></i></button>
    </div>
  </body>
</html>

,

看起来您想要获取 CSS 计算样式。您可以使用 getComputedStyle 返回一个对象,该对象包含该元素的所有 CSS 属性的值。

getComputedStyle(dis,"display").display

将返回在您的元素 css 中设置的显示规则。正如 Chris W 在之前的回答中解释的那样,如果您使用 el.style.display,它会寻找用于显示的内联样式规则。

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <style>
      body {
      color: white;
      background-color: #1E1B1B;
      border-color: grey;
      }
      .navbar {
      height: 50px;
      border-bottom: 2px solid grey;
      margin-bottom: 10px;
      display: block;
      }
      button.nav-btn {
      float:right;
      background-color: transparent;
      border: 1px solid grey;
      color: white;
      padding: 5px 12px;
      font-size: 30px;
      cursor: pointer;
      float: left;
      }
    </style>
    <script>
          function toggleToolNav() {
          var dis = document.getElementsByClassName("navbar")[0]
          alert(getComputedStyle(dis,"display").display)
          }
    </script>
  </head>

  <body>
    <div>
      <buttononclick="toggleToolNav()"><i></i></button>
    </div>
  </body>
</html>

javascript div 遮罩层封锁整个页面_javascript技巧

javascript div 遮罩层封锁整个页面_javascript技巧

具体解决方案如下:
一、IE和FF下document.body对象的clientHeight,offsetHeight,scrollHeight属性的差别。
clientHeight
在IE和FF下,该属性没什么差别,都是指浏览器的可视区域,即除去浏览器的那些工具栏状态栏剩下的页面展示空间的高度。
offsetHeight
在IE下,offsetHeight也是浏览器可视区域的高(包括边线)
在FF下,offsetHeight是页面具体内容的高度
scrollHeight
在IE下,scrollHeight 是页面具体内容的高度,可以小于clientHeight
在FF下,scrollHeight 是网页内容高度,不过最小值是clientHeight
二、下面是跨浏览器取得当前页面的高度的解决方法。

复制代码 代码如下:

function getPageSize()
{
var body = document.documentElement;
var bodyOffsetWidth = 0;
var bodyOffsetHeight = 0;
var bodyScrollWidth = 0;
var bodyScrollHeight = 0;
var pageDimensions = [0,0];
pageDimensions[0]=body.clientHeight;
pageDimensions[1]=body.clientWidth;
bodyOffsetWidth=body.offsetWidth;
bodyOffsetHeight=body.offsetHeight;
bodyScrollWidth=body.scrollWidth;
bodyScrollHeight=body.scrollHeight;
if(bodyOffsetHeight > pageDimensions[0])
{
pageDimensions[0]=bodyOffsetHeight;
}
if(bodyOffsetWidth > pageDimensions[1])
{
pageDimensions[1]=bodyOffsetWidth;
}
if(bodyScrollHeight > pageDimensions[0])
{
pageDimensions[0]=bodyScrollHeight;
}
if(bodyScrollWidth > pageDimensions[1])
{
pageDimensions[1]=bodyScrollWidth;
}
return pageDimensions;
}

三、页面上必须放置一个div,作为遮罩层,下面是这个遮罩层的css样式。
复制代码 代码如下:

.lockDiv
{
position:absolute;
left:0;
top:0;
height:0;
width:0;
border:2 solid red;
display:none;
text-align:center;
background-color:#DBDBDB;
filter:Alpha(opacity=60);
}

四、在客户端使用下面的javascript用遮罩层将整个页面封闭。
复制代码 代码如下:

var sandglassSpan = 1;
var timeHdl;
function DisablePage()
{
var ctrlSandglass = document.getElementById("divSandglass");
if(sandglassSpan==0)
{
window.clearTimeout(timeHdl);
ctrlSandglass.style.display = "none";
document.body.style.cursor = ''auto'';
sandglassSpan = 1;
}
else
{
document.body.style.cursor = ''wait'';
var pageDimensions = getPageSize();
ctrlSandglass.style.top = 0;
ctrlSandglass.style.left = 0;
ctrlSandglass.style.height = pageDimensions[0];
ctrlSandglass.style.width = pageDimensions[1];
ctrlSandglass.style.display = "block";
timeHdl = window.setTimeout(DisablePage,200);
}
}

五、如果页面上使用了ASP.net的Validator控件,那么应该使用如下的javascript。
复制代码 代码如下:

var sandglassSpan = 1;
var timeHdl;
function DisablePageHaveValidator()
{
var ctrlSandglass = document.getElementById("divSandglass");
if(false == Page_IsValid)
{
sandglassSpan = 0;
}
if(sandglassSpan==0)
{
window.clearTimeout(timeHdl);
ctrlSandglass.style.display = "none";
document.body.style.cursor = ''auto'';
sandglassSpan = 1;
}
else
{
document.body.style.cursor = ''wait'';
ctrlSandglass.style.display = "block";
var pageDimensions = getPageSize();
ctrlSandglass.style.top = 0;
ctrlSandglass.style.left = 0;
ctrlSandglass.style.height = pageDimensions[0];
ctrlSandglass.style.width = pageDimensions[1];
timeHdl = window.setTimeout(DisablePageHaveValidator, 200);
}
}

六、DisablePage和DisablePageHaveValidator这两个方法可以在按钮的onclick事件或其它时机调用。

javascript – DC.js图表中的初始范围选择

javascript – DC.js图表中的初始范围选择

我想在一些dc.js图表​​(条形和直线)中进行初始范围选择.
所以我添加这个例子:
.filter([7,10])

并且该范围在图表上显示良好,但显然选择了0个观察值.
我预计会选择几千个观测值.就像我用刷子手动选择范围[7,10]时那样.

我在这里缺少的任何暗示?

我的部分代码:

var chart_globalscore = dc.barChart('#chart_globalscore');
(...)
    var ndx = crossfilter(data_movies),all = ndx.groupAll()
(...),GlobalscoreDimension = ndx.dimension(function(d) { if ( !isNaN(d.Globalscore) ) {return Math.round(d.Globalscore*10)/10 ;} else {return -1;} }),GlobalscoreGroup = GlobalscoreDimension.group()
(...)
        ;
(...)
    chart_globalscore
        .width(width001)
        .height(height001)
        .margins(margins)
        .dimension(GlobalscoreDimension)
        .group(GlobalscoreGroup)
        .round(function(val){return Math.round(val*10)/10;})
        .x(d3.scale.linear().domain([0,10.1]))
        .filter([7,10])
        .centerBar(false)
        .transitionDuration(transitionDuration)
        .elasticY(true)
        .gap(1)
        .xUnits(function(){return 100;})
        .renderHorizontalGridLines(true)
        .yAxis().ticks(2)
        ;

解决方法

dc.js中的过滤器代码有点棘手.如果指定值数组,则不会将数组解释为范围. (它将数组解释为单个值,或者如果数组包含另一个数组,则为 it will filter on the values inside that array.)

请尝试指定ranged filter object:

.filter(dc.filters.RangedFilter(7,10))

javascript – 为什么LiveScript对未定义的值使用“void 8”?

javascript – 为什么LiveScript对未定义的值使用“void 8”?

我一直在使用LiveScript一段时间,我注意到,在未定义的隐式返回的情况下,使用表达式void 8.

自然,我理解使用void,但我不知道为什么具体使用整数8.

例如,以下LiveScript:

x = if truthy then \success!

将编译为:

var x;
x = truthy ? 'success!' : void 8;

解决方法

从LiveScript的文档,这里是他们使用void而不是undefined的推理:

In JavaScript,undefined can be redefined,so it is prudent to use the
void operator which produces the undefined value,always. void at the
top level (not used as an expression) compiles to nothing (for use as
a placeholder) – it must be used as a value to compile.

对于8,这是一个任意数字,可以设定为任何其他数字.根据下面的评论中的讨论,这个特别任意数字的原因是因为LiveScript是coco的一部分,whose wiki reports:

void 8 – the number 8 was chosen because it is a Chinese lucky number.

无论开发人员如何选择这个价值,广义而言,只是LiveScript void编译的.只需要通过void调用来评估一些表达式.

javascript – 为什么浏览器会替换通过css分配的宽度值?

javascript – 为什么浏览器会替换通过css分配的宽度值?

当我为所有选择分配基本样式时,例如.

width: 300px;
padding: 0;
margin: 0;
border-width: 1px;

在不同情况下通过javascript检索宽度时,我得到意想不到的结果.

>当选择可见时,with为298px.
>当select为display:none时,宽度也是298px(ff,
jQuery的)
>当select处于div中且display:none时,宽度是正确的
300像素.

(结果也是相同的分配:Box-sizing:border-Box)

好吧,检索到的宽度有时会与使用的浏览器和javascript框架不同,但总而言之,我只是希望能够检索指定的宽度(300px).
(我想它必须与这里所说的“正式怪异”有关:http://meyerweb.com/eric/thoughts/2007/05/15/formal-weirdness/,但为什么浏览器不会使用用户分配的宽度?)

如何检索指定的宽度?有没有办法做到这一点?

例子:

http://jsfiddle.net/ETCcH/5/(用于使用jquery,或者使用mootools将4替换为4)

(查看并尝试使用不同的浏览器)

最佳答案
你永远不会得到写在css文件中的值.使用JavaScript,您只能通过Web浏览器获取当前应用于该元素的css属性.

在你的情况下,如果宽度确实是固定的,你可以“强制”它最大宽度设置为300px或添加溢出:隐藏 – 如果这是一个选项.

我们今天的关于为什么通过 javascript 访问时 div 的初始状态没有值?javascript访问dom的分享已经告一段落,感谢您的关注,如果您想了解更多关于javascript div 遮罩层封锁整个页面_javascript技巧、javascript – DC.js图表中的初始范围选择、javascript – 为什么LiveScript对未定义的值使用“void 8”?、javascript – 为什么浏览器会替换通过css分配的宽度值?的相关信息,请在本站查询。

本文标签: