将css样式规则作为Javascript函数中的参数输入的正确方法是什么?

将css样式规则作为Javascript函数中的参数输入的正确方法是什么?,javascript,css,parameters,functional-programming,html5-canvas,Javascript,Css,Parameters,Functional Programming,Html5 Canvas,通过将任何样式规则和值作为参数的函数设置HTML画布元素样式的正确方法是什么?是的,我知道直接Javascript方法会奏效。setCSS()函数是版本2 setCSS()函数的测试平台,该函数旨在通过使用对象数组(键、值)作为参数来设置多个css样式,以便每个对象表示单个css属性。以下是我所拥有的不起作用的东西: function init() { 'use strict'; let can = document.getElementById('can

通过将任何样式规则和值作为参数的函数设置HTML画布元素样式的正确方法是什么?是的,我知道直接Javascript方法会奏效。setCSS()函数是版本2 setCSS()函数的测试平台,该函数旨在通过使用对象数组(键、值)作为参数来设置多个css样式,以便每个对象表示单个css属性。以下是我所拥有的不起作用的东西:

    function init() {
        'use strict';
        let can = document.getElementById('canvas');
        let ctx = canvas.getContext('2d');
        resizeBlock(can, 50, 50);
 // Tried both forms individually by commenting out other function
        setCSS(can, 'borderWidth', '20px');// not working
        setCSS(can, 'borderWidth', '20');// not working
    }

    function setCSS(element, rule, value) {
        element.style.rule = value;
        return element; // should element return or not?
    }

init
是函数,
init()
是调用函数的结果

function init() { ...snip... }
window.onload = init;
因此,这将起作用:

window.onload = init;
另外,您可能希望在定义
init()
函数之后放置它

function init() { ...snip... }
window.onload = init;

window.onload=init不带括号。在您的示例中:
window.onload=init()
与:
window.onload=undefined
相同,因为执行
init
会产生
undefined
(不返回任何内容)。相反,您不应该执行该函数,只需传递对该函数的引用,以便在窗口加载时调用它。即使您遵循上面的示例,它也不会作为窗口工作。onload被您的第二个函数覆盖。可能重复@Jonasw这些函数是相同的,OP只是询问为什么第二个可以工作而第一个不能工作。他并不想有两个加载事件。在定义函数后不需要。阅读有关变量提升的内容。