2 回答
TA贡献1777条经验 获得超3个赞
虽然您可以通过在调用周围添加适当的括号和分隔符来修复它mockColor-- 相反,而不是使用内联处理程序(这被广泛认为是非常糟糕的做法),而是考虑添加数据属性,然后使用事件委托来注意button容器内部的点击:
<button type="button" data-color="<%= "{li.id}" %>"></button>
<div>
和
container.addEventListener('click', ({ target }) => {
if (!target.matches('button')) {
return;
}
target.nextElementSibling.style.backgroundColor = '#' + target.dataset.color;
});
container按钮和 div 周围的容器在哪里。
请注意,使用的nextElementSibling,就没有必要给<div>小号id小号了。(无论如何最好避免使用数字索引 ID)
TA贡献1909条经验 获得超7个赞
<% @line_items.each do |li| %>
<button type="button" onclick="mockupColor(<%= "#{li.id}" %>)"></button>
<div id="tshirt-div-<%= "#{li.id}" %>">#code</div>
<% end %>
<script>
function mockupColor(id){
document.getElementById("tshirt-div-"+id).style.backgroundColor = '#000000';
);
</script>
您不需要循环 java 脚本函数。该函数应该只接受 JavaScript 变量并作为 java 脚本处理。
添加回答
举报