我要触发onClick更改其值的元素中有[data-targer =“ this.nextSibling”]。
是否可以在[数据目标]中使用选择器?
<div class="container">
<div class="row">
<button class="col btn btn-danger" onClick="makeLess()" data-targer="this.nextSibling">
<i class="fa fa-minus"></i>
</button>
<div class="col text-right">
0
</div>
<button class="col btn btn-primary" onClick="makeMore()" data-target="this.previousSibling">
<i class="fa fa-plus"></i>
</button>
</div>
</div>
答案 0 :(得分:0)
是的,您可以使用选择器。您的代码data-targer
中有一个错字,
其次,您需要在onClick中传递元素引用以使用element属性。
无论如何,您需要使用previousElementSibling和nextElementSibling来访问同一树级别的元素。
如果您只想更新计数“ 0”而不对元素属性进行任何操作,则不需要传递元素引用。
您可以使用以下内容。
<div class="container">
<div class="row">
<button class="col btn btn-danger" onClick="makeLess(this)" data-target="this.nextElementSibling">
<i class="fa fa-minus"></i>
</button>
<div class="col text-right">
0
</div>
<button class="col btn btn-primary" onClick="makeMore(this)" data-target="this.previousElementSibling">
<i class="fa fa-plus"></i>
</button>
</div>
</div>
<script>
function makeLess(e) {
var target = e.nextElementSibling;
target.innerHTML--;
}
function makeMore(e) {
var target = e.previousElementSibling;
target.innerHTML++;
}
</script>
这是jsFiddle:https://jsfiddle.net/sf5c3kgy/5/
答案 1 :(得分:0)
好吧,您的代码中有很多错误。
min-width: 0
所以,它应该看起来像这样(类似于Nishu上面写的):
HTML
onClick="makeMore(this)"
JS
<div class="container">
<div class="row">
<button class="col btn btn-danger" onClick="makeLess(this)">
<i class="fa fa-minus"></i>
</button>
<div class="col text-right">
0
</div>
<button class="col btn btn-primary" onClick="makeMore(this)">
<i class="fa fa-plus"></i>
</button>
</div>
</div>
另一件事:混合HTML和JS通常是不好的,应尽可能避免。最好通过function makeLess(target) {
target.nextElementSibling.innerHTML--
}
function makeMore(target) {
target.previousElementSibling.innerHTML++
}
或document.getElementById
获取元素,然后使用element.querySelector
附加事件。