Как заменить элемент в массиве элементом, которого нет в указанном массиве?

1

Поэтому я хочу, чтобы одно из изображений в массиве изменилось на вопросительный знак. Вот что я до сих пор.

var icons = new Array ();

    icons [0] = {   html: "Animals/Ape.png" };
    icons [1] = {   html: "Animals/Bat.png" };
    icons [2] = {   html: "Animals/Cow.png" };
    icons [3] = {   html: "Animals/Emu.png" };
    icons [4] = {   html: "Animals/Pig.png" };
    icons [5] = {   html: "Animals/Dog.png" };
    icons [6] = {   html: "Animals/Rat.png" };
    icons [7] = {   html: "Animals/Yak.png" };
    icons [8] = {   html: "Animals/Cat.png" };

function showBack()
    {
    document.getElementById('table').style.display = "none";
    document.getElementById('tableblank').style.display = "block";
    icons[0]="Animals/Q.png";

    setTimeout(showFront,3000);
    }

function showFront()
    {
    document.getElementById('table').style.display = "block";
    document.getElementById('tableblank').style.display = "none";
    document.getElementById('speech').style.display = "block";
    document.getElementById('typewindow').style.display = "block";

    }

Я попробовал пару решений, но я не смог выполнить какую-либо работу. Спасибо за помощь :)

  • 0
    Сначала вы определяете значки как объекты ( ={ html: something } - обратите внимание на фигурные скобки), а затем присваиваете их в виде строки ( ="Animals/Q.png" ). Если ключ / значение html важны, вам нужно это изменить. Во-вторых, где находится код, который присваивает элемент из массива элементу?
  • 0
    <div id = "containerGameplay"> <div id = "table"> <script> для (i = 0; i <9; i ++) {document.write ("<div class = 'tile'> <img src = ' "+ icons [i] .html +" '> </ div> "); } </ script> </ div> Это то, что вы имеете в виду?
Теги:
object
arrays
image
replace

3 ответа

0

Я бы сделал что-то вроде этого...

var icons = [ "Animals/Ape.png", 
              "Animals/Bat.png",
              "Animals/Cow.png" ];

icons[1] = "Animals/Q.png";
document.write(icons[1]);

или если вы хотите сохранить URL-адрес в качестве объекта...

var oIcons = [{ html:"Animals/Ape.png" }, 
              {html:"Animals/Bat.png"}, 
              {html:"Animals/Cow.png"}];

oIcons[2].html = "Animals/Q.png";
document.write(oIcons[2].html);

Так что в основном на шоу вы должны иметь...

 icons[0].html="Animals/Q.png";
0

если вы хотите повторно назначить этот объект, вы можете сделать это следующим образом:

icons[0].html = "Animals/Q.png";
0

Учитывая код, который вы опубликовали в своем комментарии:

<div id="containerGameplay">
    <div id = "table">
        <script>
            for (i = 0; i < 9 ; i++) {
                document.write ("<div class = 'tile'><img src='" + icons[i].html+ "'></div>");
            }
        </script>
    </div>

Вы используете встроенный код на своей странице, который выполняется, как только браузер загружает его. Чтобы впоследствии изменить изображение, вам необходимо создать ссылку на элемент, который вы хотите изменить. Самый простой способ сделать это - предоставить идентификаторы ваших элементов, которые бы изменили ваш код следующим образом:

document.write("<div class='title'><img id='icon_" + i + "' src='" + icons[i].html+ "'></div>");

Это приведет к тому, что первое изображение (icon[0]) будет применено к элементу с идентификатором "icon_0" и т.д. Для каждого изображения.

Позже, когда вы хотите изменить изображение, вы можете получить ссылку на правильный элемент, а затем изменить src на этот элемент:

elem = document.getElementById('icon_0');
elem.src = "Animals/Q.png"; 

Или, следуя тому, что, как я полагаю, вы пытались сделать изначально, вы можете изменить массив, а затем установить новый источник (src):

icons[0].html = "Animals/Q.png";
document.getElementById('icon_0').src = icons[0].html;

Они одинаковы, но второй пример также сохраняет значение в вашем массиве. Имейте в виду, что нет автоматической привязки данных, поэтому простое изменение массива автоматически не обновляет элемент изображения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню