Javascript 修改外部CSS值
您好,我正在尝试使用JavaScript动态更改除法的高度,但是如果使用HTML标记中的样式标记定义除法,我只能让JS读取除法的高度元素 如果它在一个单独的工作表中返回NaN,我假设是因为它找不到值,实际上返回null(我使用ParseInt使其工作) 以下是HTML:Javascript 修改外部CSS值,javascript,html,css,Javascript,Html,Css,您好,我正在尝试使用JavaScript动态更改除法的高度,但是如果使用HTML标记中的样式标记定义除法,我只能让JS读取除法的高度元素 如果它在一个单独的工作表中返回NaN,我假设是因为它找不到值,实际上返回null(我使用ParseInt使其工作) 以下是HTML: <div id="dropdown_container"> <div id="dropdown" style="height:100px;"> a </div> <
<div id="dropdown_container">
<div id="dropdown" style="height:100px;">
a
</div>
</div>
有人知道这种(mis?)功能性的原因吗。还有解决办法吗
这是一本书
尝试将高度移到CSS上,以查看我遇到的问题。ParseInt缺少基数 你说: 我只能让JS读取div的Height元素,如果 使用HTML标记中的样式标记定义 现在您只读取div的属性样式。您可以将其设置为内联。所以如果你把它去掉,你就不能再读了。有道理吗 您希望获得计算的高度。试试看:
.offsetHeight
使用inc.固定基数的测试用例的基础
更新:tada:已修复,请参阅
ParseInt缺少它的基数 你说: 我只能让JS读取div的Height元素,如果 使用HTML标记中的样式标记定义 现在您只读取div的属性样式。您可以将其设置为内联。所以如果你把它去掉,你就不能再读了。有道理吗 您希望获得计算的高度。试试看:
.offsetHeight
使用inc.固定基数的测试用例的基础
更新:tada:已修复,请参阅
不,NaN表示不是数字,不是空值。返回NaN意味着您试图以非文本的数字形式读取某些内容。
parseInt
自动删除px
,但不应忽略getHeight=parseInt(el.style.height,10)
如果height
不是auto
,则应该可以工作。传递要由setTimeout
计算的字符串是不好的做法,传递函数调用时更是如此。最好传递函数引用setTimeout(单击向下,15)代码>在不进行评估的情况下执行相同的操作。你能试着在上面复制这个行为吗?@SomekidwithHTML我知道这意味着,它可能返回null,然后parseInt它试图把它变成一个数字back@wezternator是的,没错。null是返回的内容,并且parseInt
试图将其作为数字读取。不,NaN表示不是数字,不是null。返回NaN意味着您试图以非文本的数字形式读取某些内容。parseInt
自动删除px
,但不应忽略getHeight=parseInt(el.style.height,10)
如果height
不是auto
,则应该可以工作。传递要由setTimeout
计算的字符串是不好的做法,传递函数调用时更是如此。最好传递函数引用setTimeout(单击向下,15)代码>在不进行评估的情况下执行相同的操作。你能试着在上面复制这个行为吗?@SomekidwithHTML我知道这意味着,它可能返回null,然后parseInt它试图把它变成一个数字back@wezternator是的,没错。null是返回的值,并且parseInt
正在尝试将其作为数字读取。我不知道,谢谢!这个问题困扰了我很多年。我不知道,谢谢!这个问题困扰我很久了。
function clickDown() {
var el = document.getElementById('dropdown');
var maxHeight = 200;
getHeight = parseInt(el.style.height.substring(0,(el.style.height.length)-2));
console.log(getHeight);
getHeight += 2;
el.style.height = getHeight + 'px';
timeoutHeightInc = setTimeout('clickDown()',15);
if(getHeight >= maxHeight){
clearTimeout(timeoutHeightInc);
}
}
function clickDown() {
var el = document.getElementById('dropdown');
var maxHeight = 200;
getHeight = parseInt(el.offsetHeight,10);
console.log(getHeight);
getHeight += 2;
el.style.height = getHeight + 'px';
timeoutHeightInc = setTimeout('clickDown()',15);
if(getHeight >= maxHeight){
clearTimeout(timeoutHeightInc);
}
}