javascript - 使用此方法从 JavaScript 类调用事件会导致 SyntaxError
问题描述
我想要做的是创建一个自定义动态输入。所以我将我的自定义输入包装在一个类中,一个 img 标签就像一个按钮,所以我处理了一个属性中的点击,它使用这个调用一个类方法,但是这个逻辑会产生一个语法错误。
这是我创建的类的代码:
class Description {
constructor(value) {
this._value = value;
}
get value() {
return this._value;
}
set value(text) {
this._value = text;
}
test() {
console.log("Dummy Text");
}
build() {
return `<div class="row" >
<img src="./icons/add.png" class="icon" onclick="${this.test}" />
Intitulé : <input type="text" size="50" value="${this.value}"/>
</div>`;
}
}
这是错误消息:
未捕获的 SyntaxError:意外令牌:'{'
解决方案
如果处理程序是独立的全局变量,则只能像这样内联处理程序,而事实test
并非如此。创建一个<div>
,插入 HTML,并将事件侦听器附加到子级并返回<div>
.
class Description {
constructor(value) {
this._value = value;
}
get value() {
return this._value;
}
set value(text) {
this._value = text;
}
test() {
console.log("Dummy Text");
}
build() {
const row = document.createElement('div');
row.className = 'row';
row.innerHTML = `
<img src="./icons/add.png" class="icon" />
Intitulé : <input type="text" size="50" value="${this.value}"/>
`;
row.querySelector('img').addEventListener('click', () => this.test());
return row;
}
}
但这可能允许任意代码执行,因为字符串插值到 HTML 标记中。最好分配给.value
输入的 。
class Description {
constructor(value) {
this._value = value;
}
get value() {
return this._value;
}
set value(text) {
this._value = text;
}
test() {
console.log("Dummy Text");
}
build() {
const row = document.createElement('div');
row.className = 'row';
row.innerHTML = `
<img src="./icons/add.png" class="icon" />
Intitulé : <input type="text" size="50">
`;
row.querySelector('img').addEventListener('click', () => this.test());
row.querySelector('input').value = this.value;
return row;
}
}
推荐阅读
- c++ - Cmake Visual Studio - 在输出文件夹位置创建的文件
- java - 从 CDI 代理获取真实对象
- android - 在中间有间隙的线性布局中创建两列
- here-olp - 通过 HERE OLP 数据可视化库在自定义数据中使用 64 位整数
- python - Python。收集数据直到json文件结束
- javascript - laterJS 中的多个 setTimeouts 不按计划进行
- c# - 如何从 MVC c# 中的一个 viewModel 保存来自两个模型(关系一对多)的数据?
- elixir - GenServer 可以在 Elixir 中拥有自己的结构吗?
- r - setwd 中的错误 - 无法更改工作目录
- mysql - 从选择查询中查找数据库名称