getElementsByTagName、getElementsByClassName与querySelectorAll的区别

getElementsByTagName、getElementsByClassName 获取的节点集合是动态的。
querySelectorAll 获取的节点集合是该函数调用时的节点集合快照。

getElementsByTagName 当你删除节点的时候,该方法返回的对象也会同时改变。
querySelectorAll 当你删除节点的时候,该方法返回的对象也不会改变。

下面的示例展示的它们的差异

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <style>
        .wrap{
             300px;
            height: 300px;
            background-color: orange;
            overflow-y: scroll;
        }
    </style>
    <div class="wrap">
        <p>1</p>
        <p>2</p>
        <p>3</p>
        <p>4</p>
        <p>5</p>
        <p>6</p>
        <p>7</p>
        <p>8</p>
        <p>9</p>
        <p>10</p>
        <p>11</p>
        <p>12</p>
        <p>13</p>
        <p>14</p>
        <p>15</p>
        <p>16</p>
        <p>17</p>
        <p>18</p>
        <p>19</p>
        <p>20</p>
        <p>21</p>
        <p>22</p>
        <p>23</p>
        <p>24</p>
        <p>25</p>
        <p>26</p>
        <p>27</p>
        <p>28</p>
        <p>29</p>
        <p>30</p>
        <p>31</p>
        <p>32</p>
        <p>33</p>
        <p>34</p>
        <p>35</p>
        <p>36</p>
        <p>37</p>
        <p>38</p>
        <p>39</p>
        <p>40</p>
        <p>41</p>
        <p>42</p>
        <p>43</p>
        <p>44</p>
        <p>45</p>
        <p>46</p>
        <p>47</p>
        <p>48</p>
        <p>49</p>
        <p>50</p>
        <p>51</p>
        <p>52</p>
        <p>53</p>
        <p>54</p>
        <p>55</p>
        <p>56</p>
        <p>57</p>
        <p>58</p>
        <p>59</p>
        <p>60</p>
        <p>61</p>
        <p>62</p>
        <p>63</p>
        <p>64</p>
        <p>65</p>
        <p>66</p>
        <p>67</p>
        <p>68</p>
        <p>69</p>
        <p>70</p>
        <p>71</p>
        <p>72</p>
        <p>73</p>
        <p>74</p>
        <p>75</p>
        <p>76</p>
        <p>77</p>
        <p>78</p>
        <p>79</p>
        <p>80</p>
        <p>81</p>
        <p>82</p>
        <p>83</p>
        <p>84</p>
        <p>85</p>
        <p>86</p>
        <p>87</p>
        <p>88</p>
        <p>89</p>
        <p>90</p>
        <p>91</p>
        <p>92</p>
        <p>93</p>
        <p>94</p>
        <p>95</p>
        <p>96</p>
        <p>97</p>
        <p>98</p>
        <p>99</p>
        <p>100</p>
    </div>
    <button id="delete-10p">delete-10p</button>
    <script>
        const delete10p = document.querySelector('#delete-10p')
        const wrap = document.querySelector('.wrap')
        delete10p.addEventListener('click',handle_delete10p)
        function handle_delete10p(){
            // debugger
            // const all_p_el = document.querySelectorAll('p')
            const all_p_el = document.getElementsByTagName('p')
            let times = 0
            for(let i =0,len=all_p_el.length;i<len;i++){
                if(times===10){
                    return
                }
                times++
                wrap.removeChild(all_p_el[i])
            }
            
        }
    </script>
</body>
</html>
原文地址:https://www.cnblogs.com/AFu-1993/p/12719783.html