0

次のjQueryを少し実行しようとしています。

    var c = 1;
$("#bench-box .pid-switch").each(function(){
    $(this).attr('name', 'pidsarray['+c+']');
    c = c + 1;
});

それをfirebugコンソールに貼り付けてそのように実行すると、完全に機能します。これは、セレクターが私が見つけたいものを見つけていること、そしてそれが私が望むように実行していることを私に教えてくれます。

ただし、コンソールからではなく、コード内の関数として呼び出すと、機能しません。エラーは発生せず、単に実行されません。私が次々に呼び出す関数のリストでそれに続く残りのコードは、引き続き正常に機能します。

なぜそれがコンソールを介して機能するのか、そうでないのか理解できません。これが私のコードでそれを呼び出す方法です:

$("#button").click(function() {
    adjustPids();
});

function adjustPids() {
var c = 1;
$("#bench-box .pid-switch").each(function(){
    $(this).attr('name', 'pidsarray['+c+']');
    c = c + 1;
});    
}

何かご意見は?

編集:

上記のjQueryコードは、通常どおり$(document).ready(function()でラップされています。元の質問でそれについて言及しなかったのは残念です。

4

3 に答える 3

0

私が見る限り、投稿したコードに問題はありません。コンソールにエラーはありますか? デバッグする予定がある場合は、Firebug または Chrome で Firefox を使用することをお勧めします (プラグインは必要ありません)。f12 を押して開発者ツールを開き、コンソールで出力を確認します。

<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
    $(document).ready(function(){
        $("#button").click(function() {
            console.log("ok, clicked");
            adjustPids();
        });

        function adjustPids() {
            var c = 1;
            console.log("adjustPids");
            $("#bench-box .pid-switch").each(function(){
               console.log("and this is",this);
               $(this).attr('name', 'pidsarray['+c+']');
                c = c + 1;
            });         
        };
    });
</script>
</head>
<body >
<div id="bench-box">
    <div class="pid-switch">hello</div>
    <div class="pid-switch">hello</div>
    <div class="pid-switch">hello</div>
</div>
<input type="button" id="button" value="click me" />
</body>
</html>
于 2013-02-08T03:40:33.710 に答える
0

謝罪いたします。すべてが正しく機能するようになりました。私はそれを書き直して、いくつかのことを動かしました。(まったく同じコードを書き直しましたが、以前と現在の違いは見つかりません...非常に混乱しています)。

なぜそれがうまくいくのかはわかりませんが、うまくいくことをうれしく思い、次のタスクに進みます.

にもかかわらず、ご協力いただきありがとうございます。

于 2013-02-08T03:43:04.633 に答える
-1
    var c = 1;
$("#bench-box .pid-switch").each(function(i,elm){
    $(elm).attr('name', 'pidsarray['+c+']');
    c = c + 1;
});
于 2013-02-08T03:39:31.267 に答える