Javascript - использование методов innerHTML и id в обзоре кода - PullRequest
1 голос
/ 24 ноября 2011

Все,

Вот мой код для скрипта, над которым я работаю.

ЧТО ЭТО ДЕЛАЕТ: Когда синяя кнопка нажата, div должен появиться в верхней части окна, содержащегочисло «5000».

Проблема, с которой я столкнулся, связана с использованием innerHTML и назначением идентификатора динамически созданному div.Я не получаю никаких ошибок в Firebug, поэтому не уверен, что / где я иду не так.

Строки проблемы:

eCreditTransactions[i].id = ("trans" + i);

eCreditTransactions[i].innerHTML = '<div class="cCreditContainer"><span class="cCreditsNo">-50</span>&nbsp;<img class="cCurrency" src="" alt="" /></div><span class="cCloseMsg">Click box to close.</span><div class="dots"></div><div class="dots"></div><div class="dots"></div>';

А вот полный код:

var eCreditSystem = document.getElementById("creditSystem");
var i = 0;
var eCreditTransactions = new Array(6);                 // 6 instances created which will be recycled

function createCreditTransaction ()                 // func called when a transaction occurs, at the mo, attached to onclick()
{
    if (i < 6)
    {
        $(eCreditTransactions[i]).remove();
        eCreditTransactions[i] = undefined;                 // to delete the existing data in the index of array
        addingElements (i);                 // calling function
    } else
    if (i > 5 || eCreditTransactions[i] != undefined)
    {
        i = 0;
        $(eCreditTransactions[i]).remove();
        eCreditTransactions[i] = undefined;
        console.log(eCreditTransactions[i]);
        addingElements (i);
    }
}

function addingElements (arrayIndex)                    // func called from within the 'createCreditTransaction()' func
{
    console.log(eCreditTransactions[i]);
    eCreditTransactions[i] = $(document.createElement('div')).addClass("cCreditTransaction").appendTo(eCreditSystem);

// the problem area

    eCreditTransactions[i].id = ("trans" + i);
    eCreditTransactions[i].innerHTML = '<div class="cCreditContainer"><span class="cCreditsNo">-50</span>&nbsp;<img class="cCurrency" src="" alt="" /></div><span class="cCloseMsg">Click box to close.</span><div class="dots"></div><div class="dots"></div><div class="dots"></div>';

    console.log(eCreditTransactions[i]);
    return i++;
}

Jsfiddle

1 Ответ

1 голос
/ 24 ноября 2011

в этой строке вашего кода:

 eCreditTransactions[i] = $(document.createElement('div'))

вы создаете элемент dom и затем оборачиваете его в jQuery-объект

для доступа к атрибуту idдля этого объекта вам нужно использовать его методы

 eCreditTransactions[i].attr('id', 'newId');

то же самое для свойства innerHTML

использовать метод jQuery html ();

 eCreditTransactions[i].html(yourHtmlString);

см. здесь документ

...