Изменение изображений с помощью текста

#javascript #jquery

#javascript #jquery

Вопрос:

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

Что я здесь делаю не так?

   <script type ="text/javascript">
    const textElement = document.getElementById('text')
    const optionButtonsElement = document.getElementById('option- 
     buttons')
    
    let state = {}

    function startGame() {
        state = {}
        showTextNode(1)
                         }

      function showTextNode(textNodeIndex) { 
     const textNode = textNodes.find(textNode => textNode.id === 
     textNodeIndex)
      textElement.innerText = textNode.text
      document.getElementById('img').src=textNode.img
      while (optionButtonsElement.firstChild) {
      
   optionButtonsElement.removeChild(optionButtonsElement.firstChild)
        }

        textNode.options.forEach(option => {
            if (showOption(option)) {
            const button = document.createElement('button')
            button.innerText = option.text
            button.classList.add('btn')
            button.addEventListener('click', () => 
            selectOption(option))
            optionButtonsElement.appendChild(button)
                }
            })
         }

        function showOption(option) {
        return option.requiredState == null || 
        option.requiredState(state)
            }

        function selectOption(option) {
        const nextTextNodeId = option.nextText
        if (nextTextNodeId <= 0) {
        return startGame()
            }
        state = Object.assign(state, option.setState)
        showTextNode(nextTextNodeId)
            }
      
        const textNodes = [
        {
        id: 1,
        Image:url('invitation.jpg'),
        text: "You are cordially invited to celebrate Sir Troy 
        Bennet's 70th birthday! RSVP to attend the event this 
        evening at the Cherry Hill mansion.",
        options: [
        {
        text: 'RSVP',
        nextText: 2
        },
        {
        text: "I'm going to stay home",
        nextText: 24
        }
         ]
          },
 

Ответ №1:

Для этого потребуется больше контекста, такого как воспроизводимый пример в JSFIDDLE или CODEPEN… однако, основываясь на том, что я вижу, в вашем коде говорится;

 textNode.img
 

Когда вы ищете;

 textNode.Image
 

В строке 17;

 document.getElementById('img').src=textNode.img
 

Итак, вам нужно изменить Image:url('invitation.jpg'), , чтобы быть img:url('invitation.jpg'), или обновить textNode.img , чтобы быть textNode.Image , как указано выше.

Комментарии:

1. привет, большое спасибо за комментарий. Я внедрил это изменение, но оно по-прежнему не отображало изображение. Добавление JSFIDDLE jsfiddle.net/lazytitan97/sz2dp0eu

2. @lazyTitan91 — корпус важен. Вы сделали textNode.image , а не textNode.Image — вы также используете DIV, DIV не может поддерживать использование изображений document.getElementById('img').src — поэтому измените IMG div на; <img id="img" src=""> jsfiddle.net/xzjmb5pr

3. @lazyTitan91 также ваш код действительно непоследователен. В некоторых местах вы называете это Image , в других — это Img … вам нужно быть последовательным.

4. @dDexterians Спасибо вам за помощь! Я очень устал, поэтому пропустил несколько мест. Исправлено и работает сейчас. Очень ценю это!