Onchange原型函数调用

onchange protoype function call

本文关键字:函数调用 原型 Onchange      更新时间:2023-09-26

file 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>';
};
文件研究

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

我需要从A.B.内部调用a.z

我假设你想在qw对象上调用z(),而不是直接调用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>

可以使用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