Невозможно назначить значения для строк при чтении данных из файла

Это старый вопрос, но вот мои два цента на DOM «заполнители» IMO. Элемент комментариев идеально подходит для работы (действительный html, не видимый и не вводивший в заблуждение каким-либо образом). Тем не менее, перемещение dom, ищущего комментарии, не требуется, если вы создаете свой код по-другому.

Я бы предложил использовать следующий метод:

  1. Отметьте места, где вы (например, элемент div с определенным классом)
    <div class="placeholder"></div>
    <div class="placeholder"></div>
    <div class="placeholder"></div>
    <div class="placeholder"></div>
    <div class="placeholder"></div>
    
  2. Найти обычные заполнители обычным способом (querySelector / classSelector и т. д.)

var placeholders = document.querySelectorAll('placeholder');

  1. Заменить их комментариями и сохранить ссылку на эти комментарии:

var refArray = [];

[...placeholders].forEach(function(placeholder){ var comment = document.createComment('this is a placeholder'); refArray.push( placeholder.parentNode.replaceChild(comment, placeholder) ); });

на данном этапе ваша визуализированная разметка должна выглядеть так:

<!-- this is a placeholder -->
<!-- this is a placeholder -->
<!-- this is a placeholder -->
<!-- this is a placeholder -->
<!-- this is a placeholder -->
  1. Теперь вы можете получить доступ к каждому из этих комментариев непосредственно с помощью встроенного refArray и сделать все, что угодно вы хотите сделать ... например:

заменить второй комментарий заголовком

let headline = document.createElement('h1'); headline.innerText = "I am a headline!"; refArray[1].parentNode.replaceChild(headline,refArray[1]);

3
задан Soumyajit 18 January 2019 в 09:26
поделиться

2 ответа

Вместо прямого назначения указателя вы должны либо объявить статические буферы и использовать strcpy с ними, либо использовать strdup не забудьте освободить память после того, как она не понадобится)

0
ответ дан montonero 18 January 2019 в 09:26
поделиться
timeZone = value;

Здесь вы не копируете содержимое, вместо этого вы делаете timeZone для указания на value. Таким образом, timeZone будет указывать на последнее содержимое, хранящееся в value.

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

Использование strdup.

   timeZone = strdup(value);

или

   timeZone = malloc(strlen(value)+1);
   strcpy(timeZone, value);
0
ответ дан kiran Biradar 18 January 2019 в 09:26
поделиться
Другие вопросы по тегам:

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