0

プロジェクトでjQueryライブラリを使用できないため、この小さなjQueryスニペットを「純粋な」javascriptにする必要があります

$(document).ready(function(){
$listHeight = $('ul#home-news-list').height();
$child = $('ul#home-news-list li:last-child');
while ($listHeight > 150) {
    $($child).remove();
    $listHeight = $('#home-news-inner ul').height();
    $child = $('ul#home-news-list li:last-child');
    console.log($listHeight);
    }
});

したがって、リストの高さが 150 未満になるまで、基本的に最後のリスト項目が削除されますTypeError: document.getElementById(...) is null。何にでも値する:

var listHeight = document.getElementById('home-news-list').offsetHeight();
var child = document.getElementById('home-news-list li:last-child');
while (listHeight > 150) {
    child.parentNode.removeChild(child);
    var listHeight = document.getElementById('home-news-list').offsetHeight();
    child = document.getElementById('home-news-list li:last-child');
}

コードの何が間違っているのか教えてください。

このスクリプトを呼び出しています<head></head>

4

3 に答える 3

1

<head>まず、ブラウザが DOM を解析する直前にスクリプトが実行されます。そのため、スクリプトをページの下部に配置し、DOM の準備が整ったときにのみスクリプトが実行されるようにする必要があります。

window.onload = 関数 () {
    ...
};

offsetHeight() を offsetHeight に変更すると、最初の行が機能するはずです (メソッドではなくプロパティです)。残りについては、CSSセレクターとDOM APIを掘り下げて、jQueryがどのようにそれを行うかを理解する必要があります...

jQuery が使えないのは残念です。DOM API は恐ろしい怪物です。

于 2013-06-20T20:13:22.210 に答える