Javascript 将附加内容(+;=)添加到HTML属性

Javascript 将附加内容(+;=)添加到HTML属性,javascript,html,ecmascript-6,Javascript,Html,Ecmascript 6,我有一个HTMLOnClick属性,我试图在不删除现有属性的情况下,在keypress上动态地向它添加其他属性。 换句话说 说我有 <button onclick="doThis(1)"> 还是我只需要独立构建字符串 如果不建立一个大字符串来添加到setAttribute,我似乎无法理解它。当我尝试上述JS代码的变体时,浏览器崩溃:( 谢谢看!!好的,我真的不喜欢这个答案,但它确实满足了您的要求。我不喜欢它,因为它依赖于将事件处理程序设置为DOM对象的属性,而不是使用W3C DOM

我有一个HTMLOnClick属性,我试图在不删除现有属性的情况下,在keypress上动态地向它添加其他属性。 换句话说

说我有

<button onclick="doThis(1)">
还是我只需要独立构建字符串

如果不建立一个大字符串来添加到setAttribute,我似乎无法理解它。当我尝试上述JS代码的变体时,浏览器崩溃:(


谢谢看!!

好的,我真的不喜欢这个答案,但它确实满足了您的要求。我不喜欢它,因为它依赖于将事件处理程序设置为DOM对象的属性,而不是使用W3C DOM Level 2事件模型。但是,除此之外,还有

window.dothisconter=1;
var eventList=“”;
函数doThis(){
console.log(事件列表);
dothisconter++;
eventList+=“点此(“+window.doThisCounter+”)”;
setAttribute(“onclick”,事件列表);
}
//当页面准备就绪时,此操作将执行一次:
addEventListener(“DOMContentLoaded”,function()){
var btn=document.getElementById(“btnGo”);
(功能(计数器){
eventList=“doThis(1);”;
setAttribute(“onclick”,事件列表);
}(window.dothisconter));
});

单击我!
如果只为onclick设置一个处理逻辑的处理程序,那么它的可能副本会更有意义。只需创建一个数组,在其中添加要使用给定参数运行的函数。然后处理程序就可以在数组上循环并按正确的顺序执行它们。@Liam不,这不是同一回事。C考虑到这可能是一个输入错误:
document.getLelemtById(“mybtn”).onclick+=doThis($n{index});
,它应该是
getElementById
@gillescthx!问题是函数将根据用户交互动态增长或收缩。我需要相同的onclick来处理相同的函数,但可能需要模拟调用多次。此用例将在该项目中出现多次,因此“setAttribute”如果可能的话,解决方案的类型将是最有效的。这不会执行OP所要执行的操作。每个处理程序对
dothisconter
都有相同的值,这意味着当
doThis
运行
时,计数器的
参数对所有人都是相同的。@GillesC显然,您没有运行代码。参数随着每个新的e而递增通风处理器注册-正如OP所示。
计数器周围没有关闭。
。斯科特,谢谢你的明确回答,但我认为我没有正确解释自己。这更像是每次有人单击“单击我”启动了第二个计数器。相同的功能、相同的代码、相同的名称,但对相同的函数进行了独立调用(虽然原始函数存在)。希望这是有意义的。是的,但只运行新的数字,而不是OP所追求的旧的数字。他用
onclick=“doThis(1)、doThis(2)、doThis(3)”明确了这一点
第三次之后。如
1
中所述,需要再次使用。@Fedreg我认为你没有清楚地解释自己。这段代码可以做到这一点。让我问你……在第二次单击时,应该运行多少个函数?
<button onclick="doThis(1), doThis(2)">
<button onclick="doThis(1), doThis(2), doThis(3)">
document.getElementById("mybtn").onclick += doThis($n{index};