2016-09-01 2 views
0

файл a.jsOnChange Protoype вызов функции

function a(){} 
a.prototype.z=function(){console.log('z')}; 
a.prototype.b=function(){ 
var elementHtml='<select 
onchange="/* what to fill here to make a call to a.prototype.z */ 
"><option value="1">call z</option>'; 
}; 

файл b.js

var qw= new a(); 
/* call to function */ 
document.querySelector("#somediv").innerHTML=qw.b(); 

мне нужно позвонить a.z изнутри A.B. это даже возможно с этим дизайном, или я должен использовать некоторые другие объявления/дизайн.

+0

Вы можете связать OnChange (используйте addEventListener прикрепить событие) к экземпляру 'Ā', или в буквальном смысле называют' a.prototype.z() '. – Teemu

+0

не забудьте закрыть этот флажок с помощью '' –

ответ

0

Вы можете вызвать с помощью a.prototype.z()

function a(){} 
a.prototype.z=function(){console.log('z')}; 
a.prototype.b=function(){ 
var elementHtml='<select onchange="a.prototype.z()"><option value="1">call z</option><option value="2">call b</option>'; 
return elementHtml; // need to return it 
}; 

var qw= new a(); 
document.querySelector("#somediv").innerHTML=qw.b(); 

JSFIDDLE

1

Я предполагаю, что вы хотите назвать z() на qw объекта, а не непосредственно a.prototype.z().

Ваш код не работает, потому что var elementHtml='<...' просто создает строковую переменную, а не сам элемент DOM.

Так проще всего добавить строку, запрос для элемента select, а затем связать прослушиватель событий с ним addEventListener().

function a(){} 
 
a.prototype.z=function(){console.log('z')}; 
 
a.prototype.b=function(){ 
 
    var elementHtml='<select><option value="1">select</option><option value="2">call z</option>'; 
 
    return elementHtml; 
 
}; 
 

 
var qw= new a(); 
 
/* call to function */ 
 

 
var div = document.querySelector("#somediv"); 
 
div.innerHTML = qw.b(); 
 

 
console.log(div.querySelector('select')); 
 
div.querySelector('select').addEventListener('change', qw.z);
<div id="somediv"></div>