以下TypeScript无法编译:
let svg = document.createElement("svg");
svg.width = 300;
由于错误Property 'width' does not exist on type 'HTMLElement'
。但是,例如,如果我将svg
更改为canvas
,那么它会进行编译,因此特别是它似乎是关于SVG的内容......
有什么想法吗?
答案 0 :(得分:4)
gcc -c -DPERL_CORE -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -std=c89 -O2 -Wall -Werror=declaration-after-statement -Wextra -Wc++-compat -Wwrite-strings generate_uudmap.c
In file included from /path/to/include/string.h:635:0,
from generate_uudmap.c:10:
/path/to/include/bits/string3.h:129:1: error: C++ style comments are not allowed in ISO C90
// XXX We have no corresponding builtin yet.
^
/path/to/include/bits/string3.h:129:1: error: (this will be reported only once per input file)
make: *** [Makefile:250: generate_uudmap.o] Error 1
不会创建svg元素,而是自定义html元素。
创建let svg = document.createElement("svg");
元素的正确方法:
svg
let svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
答案 1 :(得分:1)
As Marzelin explained,创建svg
元素的正确方法是使用document.createElementNS代替:
document.createElementNS("http://www.w3.org/2000/svg", "svg");
TypeScript标准lib很清楚这一点,因此您从HTMLElement
而不是document.createElement("svg")
获得SVGSVGElement
返回类型推断的原因。
答案 2 :(得分:0)
在SVG中,元素的宽度和高度是属性而不是CSS属性,因此您需要编写
document.getElementById('cercle1').setAttribute("height", "10px");
类似于宽度。
Change height/width of object SVG javascript
在你的情况下:
svg.setAttribute("width", "300px");
答案 3 :(得分:-2)
您的问题标题是问题“属性'宽度'在类型'HTMLElement'上不存在”
HTMLElement
没有属性width
,它有属性style
。并且style
有width
let svg = document.createElement("svg");
svg.style.width = '30px';
在您的情况下,您需要SVGSVGElement
var svgEl = document.createElementNS("http://www.w3.org/2000/svg", "svg")
svgEl.width = 300