Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 13.04.2013
Сообщений: 165
1

Подмена изображений

18.06.2016, 14:20. Показов 2612. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть скрипт на смену изображений в браузерной игре. Но изображения меняются не везде и в одном месте не получается сменить.
Вот код элемента который я могу поменять:
HTML5
1
<img src="//img.league17.ru/pub/mnst/full/026.png">
его я меняю вот так вот:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
if(tgt.tagName == 'IMG') {
                    if (/img\.league17\.ru\/pub\/mnst\/full/.test(tgt.src)) {
                        tgt.style.display = 'none';
                        var spid = getFN(tgt.src).substr(0,3);
                        var rang = tgt.parentNode.parentNode.children[0].textContent;
                        var fighttest = tgt.parentNode.parentNode.parentNode.parentNode.parentNode.id || null;
                        tgt.src = ("http://play.pokemonshowdown.com/sprites/"+((rang.length == 0)?'bw':'bw-shiny')+"/"+spritedex[parseInt(spid)][1]+".png");
                        tgt.onload = function () {
                            tgt.style.display = 'initial';
                            if (fighttest == 'divFightI') {
                                tgt.style.transform = 'scale(-1, 1)';
                            }
                        };
А вот код элемента на который я не могу понять как сделать условие и подменить этот элемент другим изображением:
HTML5
1
<div class="imagebox" style="background-image: url("//img.league17.ru/pub/mnst/full/026.png");">
Вобщем подскажите пожалуйста как можно переделать приведённое мной условие что бы я мог поменять элемент на нужное мне изображение. Если кто может приведите пожалуйста мой код в исправленном виде. Спасибо заранее.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2016, 14:20
Ответы с готовыми решениями:

Смена изображений при обновлении страницы. Адаптивность изображений
Здравствуйте! Нашел скрипт, который изменяет изображение при обновлении страницы, он меня...

Подмена картинок на js
Всем привет, не могу разобраться как написать подобный рабочий код. Нужно на js выбрать из html...

подмена картинки
Добрый день. Я раньше писал страничку на HTML (т.е. без Java и т.п.) но к сожалению потерял ее. у...

подмена console.log
Гуру, подскажите пожалуйста! Можно ли ПОЛНОСТЬЮ подменить методы вроде console.log()? Например...

6
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
18.06.2016, 19:37 2
вы не совершенно не понимаете разницы между атрибутом и свойством
специально для вас сделал страничку, это различие наглядно показывающую
0
0 / 0 / 1
Регистрация: 13.04.2013
Сообщений: 165
19.06.2016, 01:23  [ТС] 3
kalabuni, нечего не понял, кроме твоего чрезмерного ЭГО и тяги к нравоучению. Я просил нормальный ответ что мне нужно сделать а не то что ты мне написал. Вопрос остаётся открытым, кто может помогите пожалуйста. Заранее спасибо.
0
Superposition
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
19.06.2016, 03:02 4
Apakalipsis, немудрено, тут код с сильным запахом. Могу дать простейшую рекомендацию например для работы с изображениями нужно их всех загрузить на стадии инициализации игры. Вот вариант метода предварительной загрузки картинок:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function preloadImages(imgs, pending, done) {
    var length = imgs.length,
        img;
 
    for (var i = 0; i < length; i++) {
        img = new Image();
        img.src = imgs[i];
        img.onload = function() {
            pending.call(this, i, this.src);
            length--;
            if (length === 0) done.call(this, imgs);
        };
    }
 
};
в нем два коллбека - pending и done.
Pending - процесс загрузки еще идет(можно показать спиннер или шкалу прогресса).
Done - загрузка завершена, все картинки в кеше.

Пример использования:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var images = [
    'http://img09.deviantart.net/0675/i/2012/085/9/2/iconic_character_sketch_dump2_by_howlbird07-d4u25ej.jpg',
    'https://s-media-cache-ak0.pinimg.com/736x/aa/44/ac/aa44ac7d61227ad3fc7a4300496986a3.jpg',
    'https://ilooshka.files.wordpress.com/2008/03/fish.jpg',
    'https://s-media-cache-ak0.pinimg.com/236x/3b/2a/2c/3b2a2c80a507c60051fef1f9846086f2.jpg',
    'http://curiodept.com/blogimages/animals002_sm.png'
];
 
preloadImages(images, function(img) {
    console.log(img + ' is loaded');
}, function(imgs) {
    console.log('All done');
    var img = document.createElement('img');
    var i = 0;
    document.body.appendChild(img);
    setInterval(function() {
        if (i > imgs.length - 1) i = 0;
        img.src = imgs[i++];
    }, 1000);
});
лайф демо: https://jsfiddle.net/ecpr221e/
0
0 / 0 / 1
Регистрация: 13.04.2013
Сообщений: 165
19.06.2016, 03:53  [ТС] 5
Padimanskas, проблема не с загрузкой изображений, и пофигу что код кривоват, дело в том что я не понимаю как мне зацепить изображение во втором случае когда оно обёрнуто в имейдж бокс. Ведь адрес и в 1 и во 2 случае одинаковый, и я у друга спрашивал как он это делает, но он делал это в делфи и он мне сказал что у него не важно во что обёрнуто. Если этот адрес дёргается то он заменит картинку везде где дёргается этот адрес. А в js как я понял если даже адрес одинаковый, то всё равно там где обёрнуто в имейдж бокс там картинка всё равно не заменится, пусть и адрес одинаковый. Вот в этом проблема. Как правильно составить условие что бы зацепить объект который я скидывал вторым примером. Вот он ещё раз:
HTML5
1
<div class="imagebox" style="background-image: url("//img.league17.ru/pub/mnst/full/026.png");">
0
Superposition
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
19.06.2016, 04:31 6
Apakalipsis, в js нет никаких имеджбоксов это не дельфа. у блока div можно прочитать/установить правила стилей динамически, можно прямо в разметке внутри атрибута как у тебя в примере. предположим из кода это делается так div.style.backgroundImage = 'url('+путь к картинке+')'; еще попробуй все таки обозначить протокол или относительный путь
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
19.06.2016, 09:53 7
Цитата Сообщение от Apakalipsis Посмотреть сообщение
нечего не понял
природа обделила?
бывает
поясню иначе:
в HTML-коде в атрибуте SRC тега <IMG>вы можете прописать "myPicture.png", т.е. относительный адрес файла с картинкой, но браузер её найдёт в той же папке, что и текущий HTML-файл и в
свойстве src этого элемента пропишет абсолютный путь к указанному файлу
т.е. значение атрибута далеко не всегда равно значению соответствующего свойства

а вы в своём скрипте этого совершенно не учитываете -- выражение tgt.src.substr(0,3), которое вы используете в своём скрипте, по-любому вернёт вам подстроку 'htt'
0
19.06.2016, 09:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2016, 09:53
Помогаю со студенческими работами здесь

Подмена url картинки
Как бы так сделать чтобы при нажатии на ссылку передался id с ссылки в скрипт и потом по...

Подмена ключа значения в get запросе
Есть программа, которая изначально работала только с яндексом, но немного &quot;поковыряв&quot; её конфиги я...

Подмена класса при клике
Всем привет! Ребята, помогите пожалуйста запилить такой скрипт. Имеем следующее &lt;div...

Подмена последнего запроса при рефреше
Например, загрузилась страница после выполнения POST запроса. Если теперь нажать в броузере...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru