10

要素があります。この要素は、次のコードを介して関数 calcTotal を呼び出します。

$('.pause').change(function(e) {
    window.alert("pause changed");
    calcTotal(e);

calcTotal(e) のコードは次のとおりです。

function calcTotal(event)
{   alert('calcTotal called');
    var myId = event.currentTarget.attr('id');

    myId = myId.replace(/[^0-9]/g, '');

    var timeRegex = /^[0-9]{1,2}:[0-9]{2}$/;

    if($('#start'+myId).val().match(timeRegex) && $('#end'+myId).val().match(timeRegex) && $('#pause'+myId).val().match(timeRegex))
    {
        var minutes = 0;

        var n = $('#end'+myId).val().split(':');
        minutes = parseInt(n[0])*60 + parseInt(n[1]);

        var n = $('#start'+myId).val().split(':');
        minutes -= parseInt(n[0])*60 + parseInt(n[1]);

        var n = $('#pause'+myId).val().split(':');
        minutes -= parseInt(n[0])*60 + parseInt(n[1]);

        var hours = Math.floor(minutes/60);
        minutes = minutes % 60;
        alert(hours + ':' + minutes);
        $('#total' + myId).val(hours + ':' + minutes);
    }
    else
    {       
        $('#total' + myId).val('00:00');
    }

}   

私が例外として機能せず、firebugでデバッグすると、次のように表示されます。

TypeError: event.currentTarget.attr is not a function
var myId = event.currentTarget.attr('id');  

要素のIDをmyIdに保存したいと思います。どうすればいいですか?

4

3 に答える 3

20

event.currentTargetjQuery オブジェクトではなく、DOM ノードです。

var myIf = event.currentTarget.id;
于 2013-01-08T20:25:16.790 に答える
11

event.currentTargetは jQuery オブジェクトではありませattrundefined

次の方法で修正できます。

$(event.currentTarget).attr('id');
event.currentTarget.id;
于 2013-01-08T20:25:24.467 に答える
3

コードの残りの部分が意図したとおりに機能すると仮定すると、次のことをお勧めします。

var myId = event.currentTarget.id;

これは jQuery オブジェクトではなくプレーンな DOM ノードであるため、このattr()メソッドは機能しませんし、機能しません。

参考文献:

于 2013-01-08T20:25:18.603 に答える