鍍金池/ 問答/HTML/ 為什么獲取不到獲取當(dāng)前點(diǎn)擊的buttton的兄弟節(jié)點(diǎn)

為什么獲取不到獲取當(dāng)前點(diǎn)擊的buttton的兄弟節(jié)點(diǎn)

<template>
    <div>
        <div v-for="(item,index) in vote" :key="index">
           <button @click="dovote(index,item.count,$event)">點(diǎn)擊投票{{index+1}}</button>數(shù)量:{{item.count}} 
        </div>
        <ul>
            <li id="firstli" @click="getele">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
    </div>  
</template>

<script>
    export default{
        data:function(){
            return {
                vote:[{
                    id:1,
                    count:1
                },{
                    id:2,
                    count:2
                },{
                    id:3,
                    count:3
                },{
                    id:4,
                    count:4
                }],
            }
        },
        methods:{
            dovote(i,c,e){
                this.vote[i].count++;
                console.log(e.target);
                let siblings=this.siblings(e.target);
                console.log("-------------------"+siblings);
                // console.log( e.target.siblings());
                // e.target.siblings().style.disabled=true;

            },
            siblings(elem) {
                var a = [];
                var b = elem.parentNode.children;
                for(var i =0;i<b.length;i++) {
                    if(b[i] !== elem) {a.push(b[i])};
                }
                return a;
            },
            getele(){
                let ele = document.getElementById("firstli");
                console.log(ele);
                let ss = this.siblings(ele);
                console.log(ss);
                for(let i =0;i<ss.length;i++){
                    // console.log(ss[i]);
                    ss[i].style.color='red';
                }
            }
        }
    }
</script>

<style lang="less" scoped>

</style>

我寫了ul 點(diǎn)擊第一個(gè)li是可以獲取到其他的li的
我不知道為什么上面那個(gè)button點(diǎn)擊就獲取不到其他的button?

clipboard.png

回答
編輯回答
我以為

你是想做什么功能呢?想獲取dom,可以用refs,但是建議最好不要操作dom,可以有其他實(shí)現(xiàn)方式的,事件里傳的參數(shù)$event并不是dom節(jié)點(diǎn),你console.log一下e就知道了。

你想實(shí)現(xiàn)的功能可以用數(shù)據(jù)來驅(qū)動,建議使用vue先改變一下jquery思想,本身vue就是一個(gè)輕量級框架,例子如下
修改模板

<div>
    <div v-for="(item,index) in vote" :key="index">
    /*給button綁定disabled屬性,取消傳參$event*/
       <button @click="dovote(index,item.count)" :disabled="item.disabled">點(diǎn)擊投票{{index+1}}</button>數(shù)量:{{item.count}}
    </div>
    <ul>
       <li id="firstli" @click="getele">1</li>
       <li>2</li>
       <li>3</li>
       <li>4</li>
    </ul>
</div>  

修改數(shù)據(jù)結(jié)構(gòu),增加disabled屬性

data: {
    vote:[{
           id:1,
           count:1,
           disabled:false
         },{
           id:2,
           count:2,
           disabled:false
         },{
           id:3,
           count:3,
           disabled:false
         },{
           id:4,
           count:4,
           disabled:false
     }],
},
 

修改方法

dovote(i,c){
    this.vote[i].count++;
    this.vote.map((v,index)=>{
       if(index!=i){
          v.disabled=true
       }
    });
}
2018年8月1日 00:42
編輯回答
歆久

你都用vue了,為什么還要document.getElementById()?

2018年4月6日 22:55
編輯回答
痞性

因?yàn)槟鉬or的是div 而不是button

2018年6月22日 04:38
編輯回答
愛是癌
<div v-for="(item,index) in vote" :key="index">
    <button @click="dovote(index,item.count,$event)">點(diǎn)擊投票{{index+1}}</button>數(shù)量:{{item.count}} 
</div>

//遍歷出來以后=>
<div>
    <button>點(diǎn)擊投票{{index+1}}</button>數(shù)量:{{item.count}} 
</div>
<div>
    <button>點(diǎn)擊投票{{index+1}}</button>數(shù)量:{{item.count}} 
</div>
<div>
    <button>點(diǎn)擊投票{{index+1}}</button>數(shù)量:{{item.count}} 
</div>
<div>
    <button>點(diǎn)擊投票{{index+1}}</button>數(shù)量:{{item.count}} 
</div>

div遍歷出多個(gè),但是每個(gè)div里都只有一個(gè)button,button哪有同級的兄弟節(jié)點(diǎn)?

2018年8月18日 01:56