所以我有这个问题,每次我创建一个新的元素,我的Jscolor函数在新元素上工作,因为它需要一个唯一的ID。我不知道如何解决这个问题。创建一个新的独特的id每次我创建一个JavaScript中的新元素
我已经尝试过for循环等,并无法弄清楚如何。因为在JS函数中我需要选择一个ID,但是我如何选择一个刚刚创建的ID?
希望有人能帮助我解决这个问题:)
HTML代码:
<p class="half-circle">
<button class="addNoteBtn">
<i class="ion-android-add-circle"></i>
</button>
</p>
JS代码:
createNote = function(){
var stickerEl = document.createElement('div'),
barEl = document.createElement('div'),
color = document.createElement('button'),
colorIcon = document.createElement('i'),
deleteBtn = document.createElement('button'),
deleteBtnIcon = document.createElement('i'),
moveIcon = document.createElement('i'),
colorEl = document.createElement('input'),
textareaEl = document.createElement('textarea');
var transformCSSPosition = "translateX(" + Math.random() * 800 + "px) translateY(" + Math.random() * 400 + "px)";
stickerEl.style.transform = transformCSSPosition;
barEl.classList.add('bar');
stickerEl.classList.add('sticker');
color.classList.add('color');
deleteBtn.classList.add('deleteBtn');
deleteBtnIcon.classList.add('ion-android-delete');
colorIcon.classList.add('ion-android-color-palette');
stickerEl.id = "1";
colorEl.classList.add('jscolor');
colorEl.onchange = function(){update(this.jscolor)};
colorEl.value = "cc66ff";
color.onclick = function() {showColorPicker};
// tilføj til:
stickerEl.append(barEl);
stickerEl.append(color);
stickerEl.append(deleteBtn);
stickerEl.append(colorEl);
stickerEl.appendChild(textareaEl);
color.append(colorIcon);
deleteBtn.append(deleteBtnIcon);
barEl.append(moveIcon);
stickerEl.addEventListener('mousedown', onDragStart, false);
document.body.appendChild(stickerEl);
};
createNote();
addNoteBtnEl = document.querySelector('.addNoteBtn');
addNoteBtnEl.addEventListener('click', createNote, false);
document.addEventListener('mousemove', onDrag, false);
document.addEventListener('mouseup', onDragEnd, false);
function update(jscolor) {
document.getElementById('1').style.backgroundColor = '#' + jscolor;
}
为什么不是'document.createElement('div').id ='your_random_id';'? –
@NirBen-Yair它仍然不会创建一个uniwue id。我将id设置为低一点,但是我想让id每次都独一无二,否则jscolor将无法工作! – Scripto
你需要一个ID为什么?你有一个对节点本身的引用:'colorEl.onchange = function(){stickerEl.style.backgroundColor ='#'+ colorEl.value};' – Thomas