V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
phoenix0
V2EX  ›  JavaScript

js 变量无法进行调用

  •  
  •   phoenix0 · 2018-12-17 11:20:45 +08:00 · 2962 次点击
    这是一个创建于 2169 天前的主题,其中的信息可能已经有所发展或是发生改变。

    window.onload = function() { alert('此 JS 代码可执行');

    var oWeib = document.getElementById('weib');
    var oCaid = document.getElementsByClassName('caid');
    var oA = document.getElementById('wb');
    
    function tan() {
    	alert(oA.getAttribute('href'));
    }
    
    oA.setAttribute = ("href","www.baidu.com");
    oA.onclick = tan();
    
    tan();
    

    }

    第一个 alert 和 tan()函数里的 alert 都会弹窗,但是后面的 set 就没有效果。 onclick 的点击事件也会被忽略然后直接触发 tan()函数。

    5 条回复    2018-12-17 15:37:04 +08:00
    zjsxwc
        1
    zjsxwc  
       2018-12-17 11:26:21 +08:00   ❤️ 1
    oA.onclick = tan;
    shintendo
        2
    shintendo  
       2018-12-17 11:28:20 +08:00   ❤️ 1
    tan()是函数返回值,tan 才是函数
    linchengzzz
        3
    linchengzzz  
       2018-12-17 14:01:36 +08:00
    oA.onclick = () => tan(); 或者 oA.onclick = tan;
    lukunlin
        4
    lukunlin  
       2018-12-17 14:48:22 +08:00
    在 Js 里,记住,任何函数加()就是执行,除了.bind 一些特殊引向函数,然后你的函数没有写 return,那默认就是 return 的 undefined,所以你把一个函数执行的结果,undefined 复制给了一个 onevent,当然没效果
    beyoung
        5
    beyoung  
       2018-12-17 15:37:04 +08:00
    还以为是个大新闻呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2908 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:18 · PVG 20:18 · LAX 04:18 · JFK 07:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.