javascript不想解析文本两次以上

时间:2013-07-31 04:04:53

标签: javascript jquery html css parsing

所以我在我的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);          
     });
});

...超级简单,就像一个魅力

3 个答案:

答案 0 :(得分:1)

尝试使用replaceparseInt等功能,

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解决方案。转型卖给了我。我要去那。 再次感谢你们。