0

それを見つけた後に機能するために単純な整数を渡したい。コードは次のとおりです。

$("#play").click(function() {
    var elementNumber;
    var properElement;
    for (var i = 0; i < playlistLength; i++) {
        if (listOfElements[i].type == 'video' && listOfElements[i].position == 0) {
            elementNumber = i;
        }
    };
    document.getElementById(listOfElements[elementNumber].name).play();
    properElement = listOfElements[elementNumber];
    console.log(properElement); // gives out proper element;
    setInterval("galleryElement.draw(properElement.name, properElement.type, properElement.position)", 33); // Cannot read property 'name' of undefined 
    return false;
})​

エラーが発生しますCannot read property "name" of undefinedか?どうすればそこに引数を渡すことができますか?

前もって感謝します!

4

3 に答える 3

0
$("#play").click(function() {
    var elementNumber;
    var properElement;
    for (var i = 0; i < playlistLength; i++) {
        if (listOfElements[i].type == 'video' && listOfElements[i].position == 0) {
            elementNumber = i;
        }
    };
    document.getElementById(listOfElements[elementNumber].name).play();
    properElement = listOfElements[elementNumber];
    console.log(properElement); // gives out proper element;
    setInterval(function() {
        galleryElement.draw(properElement.name, properElement.type, properElement.position)
    }, 33);
    return false;
})

または(IEでは機能しません)

$("#play").click(function() {
    var elementNumber;
    var properElement;
    for (var i = 0; i < playlistLength; i++) {
        if (listOfElements[i].type == 'video' && listOfElements[i].position == 0) {
            elementNumber = i;
        }
    };
    document.getElementById(listOfElements[elementNumber].name).play();
    properElement = listOfElements[elementNumber];
    console.log(properElement); // gives out proper element;
    setInterval(galleryElement.draw, 33, properElement.name, properElement.type, properElement.position);
    return false;
})
于 2012-09-18T12:09:48.040 に答える
0

試す

setInterval(function(){
  galleryElement.draw(properElement.name, properElement.type, properElement.position)
}, 33);

properElement実行する関数のスコープを設定する必要があります。

于 2012-09-18T12:10:08.977 に答える
0

文字列を渡すsetInterval()と、properElementのスコープが失われます。関数呼び出しを直接(引用符なしで)渡す必要があります。

setInterval(function(){
  galleryElement.draw(properElement.name, properElement.type, properElement.position)
}, 33);

一般に、文字列をに渡すことはお勧めしません。これはsetInterval/Timeout、を介して評価する必要があるためevalです。関数または関数への参照を常に渡します。

于 2012-09-18T12:14:55.340 に答える