onchange原型函数调用

时间:2016-09-01 14:12:19

标签: javascript onchange

档案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. 这个设计是否可行,或者我应该使用其他声明/设计??。

2 个答案:

答案 0 :(得分:1)

我假设您要在z()对象上致电qw,而不是直接a.prototype.z()

您的代码不起作用,因为var elementHtml='<...'只创建一个字符串变量,而不是DOM元素本身。

最简单的方法是,附加字符串,查询select元素,然后使用addEventListener()将事件监听器绑定到它。

&#13;
&#13;
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;
&#13;
&#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();

JSFIDDLE