getElementById работает над элементами, созданными JavaScript?

попробуйте это:

const loadDataEpic = (action$, state$) =>
  action$.pipe(
    ofType('FETCH_DATA_SUCCESS'),
    mergeMap(action => {
     const isPivot = action.context === 'pivot';
     return of(
       { type: 'RESET_IMAGE_DATA' },
       { type: 'INITIALISE_FILTERS' },
       ...(isPivot ? [{ type: 'SET_PIVOT' }] : [])
     );
    })
  );

он добавит действие SET_PIVOT, только если условие выполнено.

с .: Если вам не нравится синтаксис, вы можете использовать массив и выдвинуть его в зависимости от условия, а затем вернуть его с помощью of(...actions)

5
задан Owen 5 December 2008 в 08:01
поделиться

3 ответа

Отвечать на Ваш основной вопрос: document.getElementById действительно работает с динамично добавленными элементами.

В Вашем примере кода Вы создаете openMonth отделение и устанавливаете его innerHTML. Затем в удалить теге Вы делаете это:

var month = openMonth.getElementsByTagName("span")[0].innerHTML;

openMonth.getElementsByTagName("span") не будет существовать и получит ошибку, потому что нет никаких элементов промежутка. Я не знаю, является ли это ошибкой в коде или если это - просто неполный образец в сообщении.

3
ответ дан 14 December 2019 в 04:49
поделиться

Другая идея - Вы снова используете 'openMonth' идентификатор для различных элементов, возможно, это - проблема, даже если Вы удаляете предыдущий элемент сначала.

Вы могли попытаться использовать класс вместо идентификатора, или Вы могли, держа глобальную переменную с 'текущим элементом месяца'.

0
ответ дан 14 December 2019 в 04:49
поделиться

Необходимо согласиться с:

openMonth.id = "openMonth";

getElementById() может только работать, если элемент является частью DOM, но так как Вы уже используете insertBefore() это - просто примечание стороны.

Существует общий источник беспорядка, включенного здесь: названный "идентификатор" атрибута является не обязательно тем, который определяется как идентификатор элемента в базовом DTD. В декларативном HTML они связаны автоматически. Когда Вы используете setAttribute(), Вы больше, чем не создаете атрибут, названный "идентификатором". Сам идентификатор элемента доступен через .id свойство.

Править

Следующие работы для меня:

function test()
{
  // create element, set ID
  var p = document.createElement("P");
  p.innerHTML = "Look ma, this is a new paragraph!";
  p.id = "newParagraph";

  // make element part of the DOM
  document.getElementsByTagName("BODY")[0].appendChild(p);

  // get element by ID
  var test = document.getElementById("newParagraph");
  alert(test.innerHTML);
}
5
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: