2016-08-24 184 views
-1

以下函数将返回undefined,而不是单击的元素的ID。它为什么这样做?e.target返回undefined?

// get id of the target element that is clicked on 
getId: function() { 
    var cell = document.getElementById('board'); 
    cell.addEventListener('click', function(e) { 
    return e.target.id; 
    }); 
}, 
+1

“的下面的函数返回undefined“---它返回*其中*? 'getId'函数根本没有任何'return'。 – zerkms

+0

@zerkms,也许这就是为什么它返回“未定义”?在JS中,函数总是返回一些东西。 –

+1

@GerardoFurtado不明白什么确切的功能OP是指(它有2),所以我不会猜测。 – zerkms

回答

2

getId()功能只需添加一个侦听器,不返回ID ...

考虑这个片段中,它的工作:

var cell = document.getElementById('board'); 
 
var id = cell.addEventListener('click', function(e) { 
 
    console.log (e.target.id); 
 
});
<body> 
 
    <div id="board"> 
 
    <div id="messageArea">Let's begin! Enter a position below. </div> 
 
    <table> 
 
     <tr> 
 
     <td id="00">00</td><td id="01">01</td><td id="02">02</td><td id="03">03</td><td id="04"04>04</td><td id="05">05</td><td id="06">06</td> 
 
     </tr> 
 
     <tr> 
 
     <td id="10">10</td><td id="11">11</td><td id="12">12</td><td id="13">13</td><td id="14">14</td><td id="15">15</td><td id="16">16</td> 
 
     </tr> 
 
     <tr> 
 
     <td id="20">20</td><td id="21">21</td><td id="22">22</td><td id="23">23</td><td id="24">24</td><td id="25">25</td><td id="26">26</td> 
 
     </tr> 
 
     <tr> 
 
     <td id="30">30</td><td id="31">31</td><td id="32">32</td><td id="33">33</td><td id="34">34</td><td id="35">35</td><td id="36">36</td> 
 
     </tr> 
 
     <tr> 
 
     <td id="40">40</td><td id="41">41</td><td id="42">42</td><td id="43">43</td><td id="44">44</td><td id="45">45</td><td id="46">46</td> 
 
     </tr> 
 

 

 
    </table> 
 

 
    </div> 
 

 
    <form> 
 
    <input type="text" id="guessInput" placeholder="A0"> 
 
    <input type="button" id="fireButton" value="Fire!"> 
 
    </form> 
 

 
</body>

+0

是的,我用console.log测试过,看到它在工作,这就是为什么我感到困惑。但是,如何返回getId()函数中的e.target.id?如果我这样做了,我得到一个ReferenceError,说'e没有被定义' – Tiramisu

+0

@所有问题都被标记为重复的,好吧,因为它已经被详细回答了。请麻烦检查重复。 – zerkms