2016-09-08 2 views
0

JSКак использовать текущий узел вместо этого?

var menuBtn = document.getElementsByClassName('btn-block'); 
var lenOfMenuBtn = menuBtn.length; 
for (var i = 0; i < lenOfMenuBtn; i++) { 
    menuBtn[i].addEventListener('click',addMenu,false); 
} 

function addMenu() { 
    addOkFlag(); 
    //addToCart(); 
    //removeOkFlag(); 
} 

function addOkFlag() { 
    var elmnt = document.createElement('i'); 
    elmnt.setAttribute('class','glyphicon glyphicon-ok'); 
    this.appendChild(elmnt); 
} 

Ошибка является "this.appendChild не является функцией". Я хочу вызвать несколько функций, когда пользователь нажимает кнопку, поэтому я вызываю первую функцию, где я хочу добавить тег <i>, но я не могу передать текущий узел из addEventListener, чтобы добавить этого дочернего элемента.

+0

Вы должны установить * это * в * addOkFlag * когда она вызывается из * addMenu *, которая имеет свой * это * устанавливается на элемент, когда он вызывается обработчиком, например, используя вызов: 'addOkFlag.call (this)'. – RobG

ответ

0

Вы можете передать Clicked элемент функции

var menuBtn = document.getElementsByClassName('btn-block') ; 
var lenOfMenuBtn = menuBtn.length ; 
for (var i = 0; i < lenOfMenuBtn; i++) { 
    menuBtn[i].addEventListener('click',addMenu,false) ; 
} 

function addMenu(e) { 
    addOkFlag(e.target) ; 
    // or addOkFlag(this); 

} 

function addOkFlag(el) { 
    var elmnt = document.createElement('i'); 
    elmnt.setAttribute('class','glyphicon glyphicon-ok'); 
    el.appendChild(elmnt); 
} 
+0

в 'addMenu' может использовать' addOkFlag (this); ' –

-1

все, что вы пытаетесь добавить к, дать ему атрибут ID, то ...

document.getElementsByClassName('myElementsId').appendChild(elmnt); 

..replace "myElementsId" с элементами ID

+0

Я хочу применить на несколько кнопок, поэтому я использую класс вместо id – gaurav

+0

, вероятно, должен был прочитать код .. но вы, вероятно, должны были объяснить, что слишком –

Смежные вопросы