1

前文:私はイタリア語です。英語が下手でごめんなさい。

これが私の問題です:

ボタンのセットに機能を割り当てたい。

関数にパラメータを送信する必要があります。

これは私が試したコードです:

function test(atxt) {
    var buttons = $('.tblButton');

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].onClick(sayHello(atxt));
    }
}

function sayHello(txt){alert('hello' + txt)};

...次のエラーが発生します:

Uncaught TypeError: Object #<HTMLButtonElement> has no method 'onClick'

どこが間違っていたのか、どうすれば修正できますか?

編集:関数のパラメーターとしてボタンのIDが必要なので、反復が必要です。buttons[i].onClick(sayHello(buttons[i].id))

4

3 に答える 3

5
buttons[i].onClick(sayHello(atxt));

察するに

$(buttons[i]).on('click', function() { sayHello(atxt) });

現在のボタンIDを取得したい場合は、これを探していると思います..

for (var i = 0; i < buttons.length; i++) {
     $(buttons[i]).on('click', function() { sayHello(this.id) });
}
于 2012-12-14T17:10:28.060 に答える
1

すべてのボタンを反復処理する場合.each()は、jquery のハンドラーでそれを行う必要があります。

$(function(){
  $(".tblButton").each(function () {
    $(this).click(function(){
       alert($(this).attr('id'));
    }); 
  });
});

jsbin をチェックアウトしてください: http://jsbin.com/usige/1/edit

于 2012-12-14T17:40:52.927 に答える
0

これはあなたの例ではうまくいきませんか:反復の別の理由がありますか?

function test(atxt) {
    $('.tblButton').on('click',function(){sayHello(atxt);});
}

function sayHello(txt){alert('hello' + txt)};

または、オプションで要素が静的で存在する場合:

function test(atxt) {
    $('.tblButton').click(function(){sayHello(atxt);});
}

function sayHello(txt){alert('hello' + txt)};

別のアプローチ:このスタイルに変更するだけです:

var txt = "fred";
var atext = "hello" + txt;

function sayHello(atext) {
    alert(atext);
}
$('.tblButton').on('click', function() {
    sayHello(atext);
});
//below here just to demonstrate
$('.tblButton').eq(0).click();//fires with the fred
txt = "Johnny";// new text
atext = 'hello' + txt;
$('.tblButton').eq(1).click();//fires the Johnny

ここで動作することを確認してください:http: //jsfiddle.net/dFBMm/

あなたのメモに基づくSO:このマークアップとコード:

<button class="tblButton" id="Ruth">Hi</button>
<button class="tblButton" id="Betty">Hi again</button>

$('.tblButton').on('click', function() {
    alert("Hello "+$(this).attr("id"));
});
$('.tblButton').eq(0).click();//fires with the Ruth
$('.tblButton').eq(1).click();//fires the Betty

http://jsfiddle.net/dFBMm/1/

于 2012-12-14T17:16:08.323 に答える