日期:2014-05-16  浏览次数:20343 次

在方法中使用this做为参数的问题

 <div class="left_MenuTitle" onclick="switchMenu(this)">
  <div class="arrowUp" ></div>6666666666</div>
  <div>

js方法如下:
function switchMenu(obj) {
  var arrowDiv = obj.firstChild;
  alert(arrowDiv.className);
}

执行时提示undefined,请问是怎么回事?

------解决方案--------------------
<div class="left_MenuTitle" onclick="switchMenu(this)"><div class="arrowUp" ></div>6666666666</div><div>
<script>
function switchMenu(obj) {
var arrowDiv = obj.firstChild;
alert(arrowDiv.className);
}
</script>

换行的话,会把textNode 认为firstChild
------解决方案--------------------
HTML code
 <div class="left_MenuTitle" onclick="switchMenu(this)"><div class="arrowUp" ></div>6666666666</div>
  <div>

------解决方案--------------------
探讨

HTML code
<div class="left_MenuTitle" onclick="switchMenu(this)"><div class="arrowUp" ></div>6666666666</div>
<div>


换行也算节点
子元素和父元素放一行上

------解决方案--------------------
HTML code
    <div class="left_MenuTitle" onclick="switchMenu(this)">
        <div class="arrowUp" ></div>6666666666</div>
    </div>


    <script>
        function switchMenu(obj) {
            var arrowDiv = obj.firstElementChild || obj.firstChild;
            alert(arrowDiv.className);
        }
    </script>