0

我有一些 javascript 从 twitter 提要中提取状态更新,以及div一个将高度设置为overflow:hidden. 问题是 hidden 并没有完全切断列表元素,而是从字面上切断高度停止的地方。

如何删除整个li元素?我从不知道每个列表元素的高度,因为 twitter 状态的大小各不相同。

此代码吐出一个带有未定义高度的列表元素的无序列表:
... 编辑:

这是大部分代码。$param 变量是用户输入。

<style type="text/css">
<!--
#twitterbox { border: 1.5px $paramborder $parambordercolor; width: $paramwidth; height: $paramheight; overflow: hidden; display: block; }
#twitter_update_list { padding-left: 30px; list-style-image:url(local/smalltwitter.png);}
#twitter_update_list li { word-wrap: break-word; margin-right: 10px; }
#twitter_update_list li a { display: block; text-align: right;}
#twitter_update_list li span a { display: inline; text-align: left;}
-->
</style>

<div id="twitterbox">
<div class="tabletitle" id="twittertitle" style="width:100%">$paramheader</div>
<div id="twitter_div">
<ul id="twitter_update_list"></ul>
</div>
<script type="text/javascript" src="https://twitter.com/javascripts/blogger.js">
</script>
<script type="text/javascript"
src="https://twitter.com/statuses/user_timeline/$generalUtil.urlEncode("$paramuser").concat(".json?callback=twitterCallback2&amp;count=$paramcount")">
</script>
</div>

<script type="text/javascript">
var list = document.getElementById("twitter_update_list");
var sHeight = list.scrollHeight;
var dHeight = document.getElementById("twitterbox").offsetHeight;
var titleHeight = document.getElementById("twittertitle").offsetHeight;

while (sHeight > dHeight-titleHeight) {
  list.removeChild(list.lastChild);
  sHeight =  list.scrollHeight;
}
</script>

两件事情。在大多数情况下,它都在工作。在 li 元素中,twitter 脚本会生成一个 span 元素和一个锚点。如果它在跨度处截断,它将删除整个列表元素,但如果它在锚点处截断,那么它会显示出来。然而,现在已经是深夜了,我一定是做了一些事情,导致提要本身无法正常工作。这是最有效的做事方式吗

4

1 回答 1

0

由于您已经使用 javascript 填充 div,因此您可以检查它scrollHeight是否大于height. 如果是,则从底部删除列表项,直到scrollHeight <= height.

于 2012-06-14T15:55:00.667 回答