<html>
<head>
<script type="text/javascript">
function showArea(area){
document.getElementById("workarea").value = area
}
</script>
</head>
<body>
<input id="workarea" type="button" value="工作地点">
<a href="javascript:showArea(this.innerHTML)">北京</a>
<a onClick="showArea(this.innerHTML)">上海</a>
</body>
<html><a onClick="showArea(this.innerHTML)">上海</a>
这句有效
但是如何改成href链接形式的呢?
菜鸟夏求助大家!

解决方案 »

  1.   

    href 不能用 this\event等东西!
    除非你加个 <a id="xx" href="javascript:showArea(document.getElementById('xx').innerHTML)"........不过这样没必要吧?
    /////////////////////////////////////////////////////出问题的代码:
    <a href="javascript:alert(this.nodeName);">怎么这个this返回的不对呀?</a>修改后这样:
    <a href="javascript:void(0);" onclick="alert(this.nodeName);">这下这个this对了?</a>其实onclick 后面的语句被解释为function,所以this代表调用该函数的对象,可以用下面代码来验证
    <a href="javascript:void(0);" onclick="alert(typeof this.onclick);">onclick是函数</a>总结:既然onclick定义的是一个函数,并且是调用元素的一个方法,this就代表该元素。
    如果是写在 href="javascript:" 里的代码,他的作用域是全局的,所以写this,它不知道到底是那个元素
     
      

  2.   

    <a href="javascript:showArea(this.innerHTML)">北京</a>
    首先要理解href在点击这个链接是其实是 window.href,那么 href 中包含javascript的this应该指向的是window对象;因此当执行这段代码时(this.innerHTML),会抛出undefined,因为window对象中没有innerHTML这个属性。<a onClick="showArea(this.innerHTML)">上海</a>
    而这段代码中的this其实是一个Element元素。他是有innerHTML这个属性的。我们可以测试下。<a href="javascript:showArea(this)">北京</a>
    function showArea(obj){
        alert(obj);//显示 [object window]
        //直接调用alert();
        obj.alert("hello world");
    }因此,<a href="javascript:showArea(this.innerHTML)">北京</a>
    和<a onClick="showArea(this.innerHTML)">上海</a>
    中this指代的对象是不同的。
    建议不要通过  href 调用javascript代码。具体的一些javascript 最佳实践可以看下http://blog.csdn.net/oxcow/archive/2010/04/07/5458650.aspx
      

  3.   


    呵呵,发完才看到。这句话很对。href中的js代码时全局的。但不是说写this不知道什么元素了,这时的this其实就是window对象。
      

  4.   

    Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。void 操作符用法格式如下:
    1. javascript:void (expression)
    2. javascript:void expressionexpression 是一个要计算的 Javascript 标准的表达式。表达式外侧的圆括号是选的,但是写上去是一个好习惯。 (实现版本   Navigator 3.0   )你以使用 void 操作符指定超级链接。表达式会被计算但是不会当前文档处装入任何内容。下面的代码创建了一个超级链接,当用户以后不会发生任何事。当用户链接时,void(0) 计算为 0,但 Javascript 上没有任何效果。<A HREF="javascript:void(0)">单此处什么也不会发生</A>下面的代码创建了一个超级链接,用户单时会提交表单。
    <A HREF="javascript:void(document.form.submit())">
    单此处提交表单</A>
    a href=#与 a href=javascript:void(0) 的区别 链接的几种办法#包含了一个位置信息默认的锚是#top 也就是网页的上端而javascript:void(0)   仅仅表示一个死链接这就是为什么有的时候页面很长浏览链接明明是#是跳动到了页首而javascript:void(0) 则不是如此所以调用脚本的时候最好用void(0)或者<input onclick><div onclick>等链接的几种办法
    1.window.open(''url'')2.用自定义函数
             <script>
             function openWin(tag,obj)
             {
                 obj.target="_blank";
                 obj.href = "Web/Substation/Substation.aspx?stationno="+tag;
                 obj.click();
             }
            </script><a href="javascript:void(0)" onclick="openWin(3,this)">株洲</a>window.location.href=""总结:
    创建一个死链接,然后调用该链接的单击事件。
    既然onclick定义的是一个函数,并且是调用元素的一个方法,this就代表该元素。
    如果是写在 href="javascript:" 里的代码,他的作用域是全局的,所以写this,它不知道到底是那个元素谢谢,懂了,结贴
      

  5.   

    试试:<a href="javascript:showArea(document.activeElement.innerHTML)">北京</a>
      

  6.   

    BLOG不错,收藏。虽然我还在学习功能如何实现,完全不考虑性能。
      

  7.   

    activeElement 获取当父 document 拥有焦点时获得焦点的对象。
    [ oActive = ] document.activeElement
    oActive Object that receives the element that has the focus. 单击<a>元素,使其获得焦点,然后获得对象,好方法!