Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将jQuery转换为Javascript问题_Javascript - Fatal编程技术网

将jQuery转换为Javascript问题

将jQuery转换为Javascript问题,javascript,Javascript,我在将jQuery代码转换为JavaScript代码时遇到了一些问题 例如,我有一段代码: $(document).ready(function() { doing some stuff }); 我试着这样编写代码: document.getElementById("canvas").onload = function () { doing some stuff }; 但它不起作用 下面是我试图转换的更大的代码: $(document).ready(function() {

我在将jQuery代码转换为JavaScript代码时遇到了一些问题

例如,我有一段代码:

$(document).ready(function() {
    doing some stuff 
});
我试着这样编写代码:

document.getElementById("canvas").onload = function () {
    doing some stuff
};
但它不起作用

下面是我试图转换的更大的代码:

$(document).ready(function() {
    var color = "#000000";
    var sign = false;
    var begin_sign = false;
    var width_line = 5;
    var canvas = $("#canvas");
    var cursorX, cursorY;
    var context = canvas[0].getContext('2d');

    context.lineJoin = 'round'; 
    context.lineCap = 'round'; 

    $(this).mousedown(function(e) {
        sign = true; 
        cursorX = (e.pageX - this.offsetLeft);
        cursorY = (e.pageY - this.offsetTop);
    });

    $(this).mouseup(function() {
        sign = false;
        begin_sign = false;
    });
有关信息,我想用JavaScript获得以下结果:

使用addEventListener而不是onload,这样您就可以有多个“侦听器”。另外,我不认为canvas元素有“load”事件,所以改用文档。与document.offsetX和document.body.offsetX相同

你的第一个例子是:

document.addEventListener('load', function() {
    // doing some stuff
});
还有你的第二个:

document.addEventListener('load', function() {
    var color = "#000000";
    var sign = false;
    var begin_sign = false;
    var width_line = 5;
    var canvas = document.getElementById('canvas');
    var cursorX, cursorY;
    var context = canvas.getContext('2d');

    context.lineJoin = 'round'; 
    context.lineCap = 'round'; 

    document.addEventListener('mousedown', function(e) {
        sign = true; 
        cursorX = (e.pageX - document.body.offsetLeft);
        cursorY = (e.pageY - document.body.offsetTop);
    });

    document.addEventListener('mouseup', function(e) {
        sign = false;
        begin_sign = false;
    });
});
这会管用的

$(document).ready(function() {
var color = "#000000";
var sign = false;
var begin_sign = false;
var width_line = 5;
var canvas = $("#canvas");
var cursorX, cursorY;
var context = canvas[0].getContext('2d');

context.lineJoin = 'round'; 
context.lineCap = 'round'; 
 });

   $(document).mousedown(function(e) {
    sign = true; 
    cursorX = (e.pageX - this.offsetLeft);
    cursorY = (e.pageY - this.offsetTop);
    });

   $(document).mouseup(function() {
    sign = false;
    begin_sign = false;
    });

继续使用您提供的部分解决方案,因为您从jQuery元素更改为DOM节点,所以必须以不同的方式访问一些属性,如下所述

document.addEventListener("DOMContentLoaded", function(event) {
    var canvas = document.getElementById('canvas');
    var context = canvas.getContext('2d'); // <--- remove [0] index

    canvas.addEventListener('mousemove', function(e) { ... ))

    function clear_canvas() {
        // offsetWidth and offsetHeight instead of Height() and Width()
        context.clearRect(0, 0, canvas.offsetWidth, canvas.offsetHeight);
    }
});

您确定画布有加载事件吗?为什么是canvas而不是window?为什么要将document元素上的处理程序更改为canvas元素上的处理程序。这不是等效的转录。您可以使用window.onload=函数{//code up!}。看见有关mousedown mouseup侦听器的信息,请参见document.addEventListener window.onload不是等效的。Jquery在文档准备就绪的情况下做的不止这些。谢谢@JSONaLeo!两个建议都很有效!谢谢但是,如果我这样做,就会出现以下错误:uncaughttypeerror:canvas.mousemove不是HTMLDocument中的函数。canvas-2.js:29是的,我错过了那个,请看我的编辑。它与您移植的所有其他事件侦听器类似。