Zamiana wszystkich Image na stronie

0

Witam, od pewnego czasu borykam się z problemem zamiany wielu obrazków na inne po wczytaniu strony.

Na stronie są dwa obrazki, które mają dwa różne linki src=
Chodzi o "attack.png" i "gras2.png".

Problem tkwi w tym, że oba mają inne id, to znaczy początki są te same np. dla attack.png id przykładowe wynosi "map_cmdicons_84810_0", inne obrazki ze strony o tym samym src co attack.png (te same obrazki) mają id takie, że "map_cmdicons_[I w tym momencie inne wartości liczbowe]", czyli początek się powtarza a dalej jest coś innego.
Natomiast "gras2.png" ma tylko src i nie ma id.

Cały czas wyskakuje mi w konsoli błąd "ERROR: Execution of script 'Zamiana obrazków' failed! Cannot set property 'src' of undefined" co jak się domyślam chodzi pewnie o określenie jakie obrazki chce zamienić. No właśnie i tu pojawia się problem.

Chcę zamienić to:
attack.png
Na to:
gras2.png

Próbowałem różnymi kodami, ostatni jest dosyć prosty i wygląda następująco:

var x1 = document.getElementsByName('attack')[0].src = 'attack.png';
var y1 = document.getElementsByName('gras2')[0].src = 'gras2.png';
var czaszmianyimage = 3

//function ZmianaObrazka ( )
//{
//if(document.getElementById("imgid").src="1.jpg") {
//  document.getElementById("imgid").src="2.jpg";
 // setTimeout ( "ZmianaObrazka", 1000 );
//}
   setTimeout(function(){
   if(document.getElementById("imgid").src="attack.jpg") {
   document.getElementById("imgid").src="gras2.jpg";
}}, czaszmianyimage*1000);

1

Do JS będziesz raczej potrzebował wyraźeń regularnych żeby to wyłapać. Ja bym to zrobił z JQuery mniej więcej tak
https://jsfiddle.net/z9ufhxtn/

0

hehe, działa po mistrzowsku :D

Wiedziałbyś może jak jeszcze dostosować wielkość tego obrazka do przypisanego elementu po zamianie?
https://jsfiddle.net/r3uLboyc/

Bo attack.png jest małą grafiką i mimo to ma narzucone wymiary oraz to że jest przypisane wszędzie w tej samej ikonce do górnego prawego rogu, natomiast gras2.png po zamianie przyjmuje te wymiary po attack.png. Jest jakiś sposób, żeby po zamianie gras2.png przeniosło się na środek i najlepiej pokryło cały element albo chociaż nie przyjmowało wartości z attack.png?

Pozdrawiam!

0

W jaki sposób masz opisane resztę tych obrazków? Wszystkie maja position: absolute? Używasz później jeszcze tych obrazków map_village? Może lepiej byłoby zastępować map_village? Jeśli chodzi o podmianę to 'amatorsko' dla jednego obrazka coś takiego:
https://jsfiddle.net/r3uLboyc/5/

0

Jak potrzebujesz pomocy do skryptów w plemionach to pisz, coś tam w tym grzebałem swego czasu

0

Wrzucam printscreena: http://prntscr.com/jvzl23 z zastosowaniem danego skryptu

Tutaj jest mapka a na niej naniesione są wioski graczy, rożne ozdobne elementy i wioski tzw barbarzyńskie (są to opuszczone rozwijane przez NPC).
Te wioski barbarzyńskie, jeżeli są atakowane to wyświetla się im w górnym prawym rogu ikonka ataku (attack.png). Chciałbym jakimś sposobem ukryć te atakowane wioski, w myśli powstała próba zakrycia wiosek ze zmodyfikowaną ikonką attack.png na gras2.png, co by "ukryło" wioskę z samego widoku zamieniając ją w "trawę".
Mapka jest podzielona na kwadraty, w każdym po 25 pól, czyli 5x5

Tutaj zamieszczam kod html do wglądu, gdzie zamieściłem jedno całe pole 5x5:
https://jsfiddle.net/utjf6wda/

Z mojej analizy wynika że każdy atak ma przypisany ID do wioski na zasadzie... wioskaID_1 co jedynka oznacza atak a taka 2 na końcu oznacza powrót z tej wioski.
Nie mam pojęcia jak ukryć te wioski po samym ID, dlatego stwierdziłem, że dużo łatwiej będzie zakryć wszystkie teksturą.

0

A jakbyś zamienił display na none dla wiosek atakowanych?

0

Byłoby extra, tylko nie wiem jak określić w kodzie które wioski są atakowane, w sensie do których przypisana jest ta ikonka. Tyle się naszukałem i funkcji przejechałem, że już patrzeć na to nie mogę xD ale Clarc fajnie naprowadził z tą jQuery i właśnie przerabiam sobie jak to działa... Odbiegając od tematu to nawet udało mi się już troszkę napisać, ale to taka bardziej sklejka na podstawie innych ;p skryptów.

1

Wystarczy chwilę popatrzyć i wszystko wiadomo, dużo logiki w tym nie ma. Na podstawie kodu strony który przesłałeś i sugestii @anonimowy wygenerowałem to (z opisami co i jak)
https://jsfiddle.net/qcfwzxe6/
Pewnie można ładniej ale nie zajmuje się na co dzień webem

1 użytkowników online, w tym zalogowanych: 0, gości: 1