所以我在我的Js中有这个函数,它在链接onclick()事件上被调用。
这是HTML:
<li class="collapsed">
<span>
<a href="#!" onclick="expand(this)">Directions</a>
</span>
<p>ajajgajajys agajgjgtajgtdja ajdtajtjate ajgdjagjd ajt</p>
</li>
这是Javascript:
function expand(myElem)
{
if (myElem.parentNode.parentNode.style.height<100)
myElem.parentNode.parentNode.style.height="100px";
else
myElem.parentNode.parentNode.style.height="45px";
}
很明显,代码会扩展链接所在的li父标记。最初,li标记在CSS中设置为height:45px;
。然后他们改为100px
并返回。
我遇到的问题是javascript只能工作两次。
我点击了链接oncde并展开了li。然后我可以点击它们并折叠李。然后它不想再次工作。
我正在查看我的浏览器错误,我发现了这个:
&#34;解析&#39; height&#39;的值时出错。声明被撤销。
在通过互联网进行多次拖钓后,我认为可能是因为我没有在我的js中包含单位声明。但我是!
myElem.parentNode.parentNode.style.height="45px"; ---- as you can see.
**** 注意:我的解决方案 * ****
对于那些偶然发现这个帖子的人来说,这是我的解决方案:
HTML - &gt;我最终做了一些事情:
<span class="heading">
Link1
<span>
<span class="information">
Info about Link1
</span>
<span class="heading">
Link2
<span>
<span class="information">
Info about Link2
</span>
Jquery非常简单:
$(document).ready(function() {
$(".information").hide();
$(".heading").click(function(){
var item = $(this);
item.next().slideToggle(500);
});
});
...超级简单,就像一个魅力
答案 0 :(得分:1)
尝试使用replace
和parseInt
等功能,
function expand(myElem)
{
if (parseInt(myElem.parentNode.parentNode.style.height.replace('px','')) < 100)
myElem.parentNode.parentNode.style.height="100px";
else
myElem.parentNode.parentNode.style.height="45px";
}
您可以使用 Jquery 来简化它,例如
<强> HTML 强>
<li class="collapsed">
<span>
<a href="#!" class="direction">Directions</a>
</span>
<p>ajajgajajys agajgjgtajgtdja ajdtajtjate ajgdjagjd ajt</p>
</li>
<强> SCRIPT 强>
$(function(){
$('.direction').on('click',function(e){
var ht= $('.collapsed').height()==100 ? 45 : 100;
$('.collapsed').height(ht);
});
});
答案 1 :(得分:0)
尝试
if (parseInt(myElem.parentNode.parentNode.style.height)<100)
答案 2 :(得分:0)
谢谢大家的帮助。 我能够弄清楚,出于某种原因,在第二次将高度设置为45px之后,它再也没有注册为int。 idk y tho。为什么它会在第一次接受100px的声明并将其注册为int而不是第二次?奇怪的。
无论如何,我尝试了parseInt,它就像一个魅力。 但我真的很喜欢Jason P提供的jQuery解决方案。转型卖给了我。我要去那。 再次感谢你们。