0

html5とjavascriptを使用してマルチトラックプレーヤーを作成しました。

var track_1 = document.getElementById('audio_1');

カスタムコントロールボタンを作成しました:音量、再生、停止、一時停止、例:

$bt_play_audio_mixette_1.click(function() {
    if (track_1.paused == false) {
        track_1.pause();
    } else {
        track_1.play();
    }
});

<audio>「ループ」ボタンがあり、属性をloop動的に変更したいと思います。

私は成功した.attr();かどうか.prop();にかかわらず試しました。

このコードの何が問題なのか知っていますか:

var loop_1_active = true;
$bt_loop_audio_1.click(function() {
    if (track_1.prop("autoplay", true)) {
        track_1.prop("autoplay", false);
        loop_1_active = false;
    } else {
        track_1.prop('loop', true)
        track_1.attr("autoplay", true);
    }
});

編集 :

jqueryオブジェクトを使用する場合:

var track_1_B = $('#audio_1');

使えないpause();

エラー:ReferenceError:track_1が定義されていませんtrack_1.pause();

純粋なJSを使用する場合:

var track_1 = document.getElementById('audio_1'); 

使用できますpause();が、ループ属性を変更できません

4

2 に答える 2

2

jqueryも使用します:

var $track_1 = $('#audio_1'); // jquery object
var track_1 = document.getElementById('audio_1'); // pure js DOM element

また、jqueryオブジェクトでのみjqueryメソッドを使用してください。

$track1.click(//...
$track1.attr(//...
$track1.prop(//...

DOM要素の他のメソッド

trakck1.pause();
于 2013-01-27T19:02:11.583 に答える
1

if (track_1.prop("autoplay", true)) {autoplayプロパティがtrueであるかどうかをチェックするのではなく、実際にtrueに設定し、常にtrueの値を返します。代わりに使用してくださいif (track_1.prop("autoplay")) {。これはdom要素であり、jQueryオブジェクトではないことがわかりました。そのtrack_1ため、使用するには1つに変換する必要がありますprop()...例:$(track_1).prop("autoplay")。また、jQueryを使用する必要なしに、要素のプロパティに直接アクセスできます

var track_1 = document.getElementById('audio_1');
var loop_1_active = true;
$bt_loop_audio_1.click(function() {
    if (track_1.autoplay) {
        track_1.autoplay = false;
        loop_1_active = false;
    } else {
        track_1.loop = true;
        track_1.autoplay = true;
    }
});
于 2013-01-27T18:59:37.050 に答える