可以在 DOM jQuery 中使用 canvas 元素吗?

Posted

技术标签:

【中文标题】可以在 DOM jQuery 中使用 canvas 元素吗?【英文标题】:Is that possible to use canvas element in DOM jQuery? 【发布时间】:2021-06-15 20:41:11 【问题描述】:

我是 jquery 的新手。

可以在 DOM jquery 中添加画布类吗? 画布类包括我想用于我的 api 的 Skycons 图标。

 $.ajax (
 url: "url",
  type: "GET",
  dataType: 'json',
  success: function(e) 

       let icon = e.weather[0].icon;
          switch (icon) 
            case "01d":
              icon = "CLEAR_DAY";
              break;
            case "01n":
              icon = "CLEAR_NIGHT";
              break;
            case "02d":
              icon = "PARTLY_CLOUDY_DAY";
              break;
            case "02n":
              icon = "PARTLY_CLOUDY_NIGHT";
              break;
            case "03d":
              icon = "CLOUDY";
              break;
            case "03n":
              icon = "CLOUDY";
              break;
            case "04d":
              icon = "CLOUDY";
              break;
            case "04n":
              icon = "CLOUDY";
              break;
            case "09d":
              icon = "RAIN";
             break;
            case "09n":
              icon = "RAIN";
              break;
            case "10d":
              icon = "RAIN";
              break;
            case "10n":
              icon = "RAIN";
              break;
            case "11d":
              icon = "RAIN";
              break;
            case "11n":
              icon = "RAIN";
              break;
            case "13d":
              icon = "SNOW";
              break;
            case "13n":
              icon = "SNOW";
              break;
            case "50d":
              icon = "FOG";
              break;
            case "50n":
              icon = "FOG";
              break;
           

然后添加函数

 setIcons(icon, document.querySelector(".icon"));

        function setIcons(icon, iconID) 
          const skycons = new Skycons( color: "white" );
          const currentIcon = icon;
           skycons.play();
         return skycons.set(iconID, Skycons[currentIcon]);
      
    let variable ='';

    variable += '<div class="row h-100">';
    variable += '   <canvas class="icon"  ></canvas>';        
    variable += '</div>';

    $('#letWeather').html(variable);

 
);

然后把这个id加到Html..

<div id="letWeather"></div>

它不显示...

但如果我在 DOM 之外将其添加到 HTML。它确实有效。为什么?

<canvas class="icon"  ></canvas>

【问题讨论】:

这很可能是因为let 是reserved keyword 并且无法重新分配。您应该会在浏览器控制台中看到一个错误。 "是否可以 [使用] jquery [添加] 画布元素" - 是的,当然可以。确保您在 doc.ready 中运行您的 jquery 代码(将其包装在 $(function() ...here ... ) 中,或者您的代码在页面上的 letWeather 元素之后运行。 您的代码在 doc.ready 中运行良好:jsfiddle.net/Lr1ufa6y/1(不是 jsfiddle 将代码放在最后) 关于let 作为变量名:我当然会考虑使用不同的名称,但您可以将其用作变量名而不会出现问题。 let = ''window.let = '' 相同,您也可以使用 var let = '',但您不能使用 let let = '' 我编辑了我的帖子。 let 没有错。我知道这是怎么回事.. 【参考方案1】:

看看你做事的顺序

首先,您在 DOM 中搜索类为 icon 的元素,然后stuff 使用您找到的任何内容。

接下来,您将创建一个包含一些 HTML 的字符串,其中包含具有该类的元素。

最后,您使用该 HTML 将该元素添加到 DOM。


如果您在将其添加到 DOM 之前在 DOM 中搜索它,您将不会找到它。

【讨论】:

如果你想为我解释更多可能会很好。你的意思是我不会找到它。 我的意思是,如果你拿一张空白纸,读出上面写的内容,然后写下“这是一个图标”,那么你读出的单词将是“”而不是“这是一个图标”。 颠倒三个步骤的顺序。

以上是关于可以在 DOM jQuery 中使用 canvas 元素吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Jquery / JavaScript完全删除canvas元素?

在SVG中绘制DOM对象时如何在Canvas中使用Google字体?

前端基于dom或者canvas实现页面水印

react怎么渲染canvas

将 Canvas 元素附加到 DOM

canvas一段背景色鼠标移入后