<script>
function show(o){
alert(o.parentNode.id);
}
</script>
<div id="a1"><a href="javascript:show(this);">文字文字文字</a></div>
<div id="a2"><a href="javascript:show(this);">文字文字文字</a></div>
<div id="a3"><a href="javascript:show(this);">文字文字文字</a></div>
<div id="a4"><a href="javascript:show(this);">文字文字文字</a></div>
<div id="a5"><a href="javascript:show(this);">文字文字文字</a></div>
<div id="a6"><a href="javascript:show(this);">文字文字文字</a></div>
<div id="a7"><a href="javascript:show(this);">文字文字文字</a></div>
123aa
弹出的值为 undefined。我把代码改成onclick才可以: <a href="#" onclick="javascript:show(this);">
但是改成这样,点击后,浏览器地址栏后面会多个#号,很不喜欢。

解决方案 »

  1.   

    如果不想有个# 可以这样写替代# :href="javascript:;",和写#一样的功能
      

  2.   

    <script>
    function show() {
        alert(document.activeElement.parentNode.id);
    }</script>
    <div id="a1"><a href="javascript:show(this);">文字文字文字</a></div>
    <div id="a2"><a href="javascript:show(this);">文字文字文字</a></div>
    <div id="a3"><a href="javascript:show(this);">文字文字文字</a></div>
    <div id="a4"><a href="javascript:show(this);">文字文字文字</a></div>
    <div id="a5"><a href="javascript:show(this);">文字文字文字</a></div>
    <div id="a6"><a href="javascript:show(this);">文字文字文字</a></div>
    <div id="a7"><a href="javascript:show(this);">文字文字文字</a></div>
      

  3.   


    谢谢!这样子连 this 这个参数都可以省掉了
      

  4.   

    貌似href真的不能获取当前对象的引用。
    <div id="a1"><a onclick="javascript:show(this);" href="#">文字文字文字</a></div>
    就可以了。可能这种对象的引用只对事件才有效吧。不单this实效,event.target也实效了。总结:还是用onclick这样的事件靠谱些。楼上的代码在chrom浏览器错误。IE和火狐可以。
      

  5.   

    <a href="javascript:void(0)" onclick="show(this);">
      

  6.   

    onclick的函数return false; 就不会导航到 #锚点了
      

  7.   


    <script type="text/javascript">
    function show(o) {
        alert(o.parentNode.id);
        return false;
    }
    </script>
    <div id="a1"><a href="#" onclick="return show(this);">文字文字文字</a></div>
    <div id="a2"><a href="javascript:void(0);" onclick="show(this);">文字文字文字</a></div>这样两种都可以