档案a.js
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.b中调用a.z. 这个设计是否可行,或者我应该使用其他声明/设计??。
答案 0 :(得分: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);
&#13;
<div id="somediv"></div>
&#13;
答案 1 :(得分: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();