Это старый вопрос, но вот мои два цента на DOM «заполнители» IMO. Элемент комментариев идеально подходит для работы (действительный html, не видимый и не вводивший в заблуждение каким-либо образом). Тем не менее, перемещение dom, ищущего комментарии, не требуется, если вы создаете свой код по-другому.
Я бы предложил использовать следующий метод:
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder"></div>
var placeholders = document.querySelectorAll('placeholder');
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 -->
заменить второй комментарий заголовком
let headline = document.createElement('h1');
headline.innerText = "I am a headline!";
refArray[1].parentNode.replaceChild(headline,refArray[1]);
Вместо прямого назначения указателя вы должны либо объявить статические буферы и использовать strcpy
с ними, либо использовать strdup
(и не забудьте освободить память после того, как она не понадобится)
timeZone = value;
Здесь вы не копируете содержимое, вместо этого вы делаете timeZone
для указания на value
. Таким образом, timeZone
будет указывать на последнее содержимое, хранящееся в value
.
Что вы можете сделать, это скопировать содержимое вместо назначения указателя.
Использование strdup
.
timeZone = strdup(value);
или
timeZone = malloc(strlen(value)+1);
strcpy(timeZone, value);