2013-07-20 2 views
2

Код:Проблемы с новым Image() в Javascript

function CreateAndAnimateEnemyImg() { 
    var enemy = new Image(); 
    enemy.src = 'enemy.jpg'; 
    enemy.class = 'Enemy'; 
    enemy.width = '30px'; 
    enemy.height = '30px'; 
    document.body.appendChild(enemy); 
    enemy.onload = function() { 
    alert('2. Image has fully loaded.'); 
    $('.Enemy').animate({ 'right': '+=20px' }); 
    } 
} 
$("#Start").click(function() { 
    CreateAndAnimateEnemyImg(); 
}); 

Странное поведением является то, что тревога поднята, но изображения не показывается, ни работает анимация. Любая помощь, пожалуйста?

+1

Почему бы не использовать '' document.createElement' или $ ('') 'вместо этого? –

+0

Можете ли вы дать мне пример? – Sora

+2

Установите 'onload' перед' src' – Scott

ответ

3

Изменить код:

enemy.className = 'Enemy'; 
enemy.width = '30'; // no px needed 
enemy.height = '30'; 

http://jsfiddle.net/UqcqN/

У вас есть две ошибки: если вы установите width свойство, которое вы не должны предоставлять единицы. И вы должны установить className, а не class.

Также рекомендуется установить src после onload обработчик.

+0

Я думаю, что это проблема OP –

+0

Да, это так, изображение есть, но ширина и высота равны 0 – iConnor

0

У вас должно быть enemy.src = 'enemy.jpg'; ПОСЛЕ определения: enemy.onload.

+0

По-видимому , обработчик onload уволен уже для OP, но ya, это лучше сделать так: –

0

Я думаю, что не нужно указывать строку типа 'px'; rtefer этого http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_img_height

Вот полный Demo Fiddle

function CreateAndAnimateEnemyImg() { 
    var enemy = new Image(); 
    enemy.src = 'http://media.steampowered.com/apps/440/icons/icon_dueling_large.14fd9f2da0f24b2dfaac37d1600c821ddb6d3456.png'; 
    enemy.class = 'Enemy'; 
    enemy.width = '130'; 
    enemy.height = '130'; 
    document.body.appendChild(enemy); 
    enemy.onload = function() { 
    alert('2. Image has fully loaded.'); 
     $('.Enemy').html(enemy); 
     console.log(enemy); 
    $('.Enemy').animate({ 'right': '+=20px' }); 
    } 
} 
$("#Start").click(function() { 
    CreateAndAnimateEnemyImg(); 
}); 
Смежные вопросы