2

li のマージンとともに幅を計算する小さな関数を作成しましたが、エラーが発生しています。

<head>

<style>

.bill ul{ list-style:none}

.bill ul li{ float:left; width:94px; margin-right:18px}

.bill ul li:last-child { margin-right:0}

</style>

<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">

$(function (){

    $('.bill').find('li').each(function (){
            var jn += parseInt($(this).css('margin-right')) + $(this).width();
        })


        alert(jn)


    })


</script>

</head>

<body>

<div class="bill">
<ul>
<li>aaa</li>
<li>aaa</li>
<li>aaa</li>
<li>aaa</li>
<li>aaa</li>

</ul>
</div>

</body>
4

2 に答える 2

3

に渡された無名関数内でキーワードjnを使用して変数を宣言しています。つまり、変数はその関数の内部でスコープされ、関数の外部には存在しません。var.each()

変数がそのステートメントのスコープに表示されないため、呼び出そうとするとアラートalert(jn)が発生する可能性があります。undefinedjn

さらに、変数を宣言して+=演算子を使用することは無効な構文です。変数をその値に追加するには、変数が存在している必要があります。次のことを試してください。

$(function (){
    var jn = 0;

    $('.bill').find('li').each(function (){
        jn += parseInt($(this).css('margin-right')) + $(this).width();
    });

    alert(jn);
});
于 2012-08-16T08:54:45.113 に答える
0

これを行うためのより良い方法は、jQuery position()http://api.jquery.com/position/を使用することです。

于 2012-08-16T08:53:12.227 に答える