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

js 小白问个小问题希望各位大牛指点下迷津

  •  
  •   djkloop · 2016-11-08 21:15:57 +08:00 · 2320 次点击
    这是一个创建于 2936 天前的主题,其中的信息可能已经有所发展或是发生改变。

    index.js
    define(function() {

    function Window() {
    
    }
    
    Window.prototype = {
    
        //window 事件
        windowscreen: function(id) {
            //window.onload = this.getHeight(options);
            var that = this;
            window.onresize = function(id) {
                    that.getHeight(id);
                   //执行 onresize 函数的时候浏览器报错
                   // index.js:32 Uncaught TypeError: Cannot read property 'style' of null
            }
            setInterval(this.getHeight(id), 1000);
        },
        //获取屏幕高度让指定元素垂直居中
        getHeight: function(id) {
            var oDiv = document.getElementById(id),
                screenHeight = document.documentElement.clientHeight;
                oDiv.style.marginTop = (parseInt(screenHeight / 2)) + 'px';
        }
    }
    return {
        Window: Window
    };
    

    });

    这是另外一个 js 文件 main.js-- require.config({ paths:{ "jquery": "jquery.min" } })

    require(['jquery','index'],function($,i) { var getHeight = new i.Window(); // getHeight.getHeight('header'); // getHeight.getHeight('main'); // getHeight.getHeight('bottom'); getHeight.getHeight('header'); getHeight.windowscreen('header'); })

    第一次接触这种写法想学习学习...处处都是坑....- -。希望大牛能够指点下我这个小白....该怎么样修改才行啊...

    6 条回复    2016-11-09 12:03:28 +08:00
    djkloop
        1
    djkloop  
    OP
       2016-11-08 21:18:42 +08:00
    第一次刚加载的时候可以执行..但是只要改变窗口就会报错....这是什么原因呢?我传了 id 进去 margintop 应该有值啊....
    djkloop
        2
    djkloop  
    OP
       2016-11-08 23:49:07 +08:00
    好吧解决了...原因是 setIntreval 也是 window 的下的方法...粗心害死人...
    setInterval(function () {
    that.getHeight(id);
    },
    这样就可以了
    itkdqwzero
        3
    itkdqwzero  
       2016-11-09 07:42:44 +08:00 via Android
    不懂 ,用什么框架吗?
    nodejs ?
    兼容性测试通过吗?
    为什么不用 jQuery ?
    yuuko
        4
    yuuko  
       2016-11-09 08:49:11 +08:00 via Android
    请看 js 事件,把 id 放第二个参数,第一个参数是事件对象
    djkloop
        5
    djkloop  
    OP
       2016-11-09 12:02:24 +08:00 via iPhone
    @itkdqwzero 就是新手想学习学习这种写法,前面没写过这种。😳
    djkloop
        6
    djkloop  
    OP
       2016-11-09 12:03:28 +08:00 via iPhone
    @yuuko 嗯嗯,好的,谢谢您。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2751 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:02 · PVG 18:02 · LAX 02:02 · JFK 05:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.