错误TS2339:JavaScript到类型脚本错误
src/app/dashboard.component.ts(49,15)中出错:错误TS2339:Property 类型“元素”上不存在“样式”。 src/app/dashboard.component.ts(50,16):错误TS2339:Property 类型“EventTarget”上不存在“textContent”错误TS2339:JavaScript到类型脚本错误,javascript,angular,typescript,syntax-error,Javascript,Angular,Typescript,Syntax Error,src/app/dashboard.component.ts(49,15)中出错:错误TS2339:Property 类型“元素”上不存在“样式”。 src/app/dashboard.component.ts(50,16):错误TS2339:Property 类型“EventTarget”上不存在“textContent” 这是一个javascript函数,但上面是我尝试在typescript中使用它时遇到的错误。我尝试将var改为let并添加。还有其他建议吗?谢谢 仪表板.ts var w
这是一个javascript函数,但上面是我尝试在typescript中使用它时遇到的错误。我尝试将var改为let并添加。还有其他建议吗?谢谢 仪表板.ts
var w = document.getElementById('wrapper');
var button = document.getElementById('randomize');
var image = w.children; // inner elements, your quotes divs
// a function to hide all divs
var hideDivs = function(divs) {
for (var div of divs) {
div.style.display = 'none';
}
}
hideDivs(image); // hide all initially
// on click
button.addEventListener('click', function(event) {
var rnd = Math.floor(Math.random() * image.length); // get random index
hideDivs(image); // hide all quotes
image[rnd].style.display = 'block'; // show random quote
event.target.textContent = 'Click one more time!'; // set button text. event.target is the button you've clicked
})
dashboard.html
<div id="wrapper">
<div class="image" img scr='../../assets/mood.jpg'></div>
<div class="image" img scr='../../assets/mood.jpg'></div>
<div class="image" img scr='../../assets/mood.jpg'></div>
<div class="image" img scr='../../assets/mood.jpg'></div>
<div class="image" img scr='../../assets/mood.jpg'></div>
</div>
<button id='randomize'>Next</button>
下一个
问题在于,target
被键入为EventTarget
,而image
的HTMLCollection
元素被键入为元素。要访问的两个属性都是在HTMLElement
上定义的。您可以做的最简单的事情是使用类型断言来告诉编译器,在您的情况下,这两种类型实际上都是HTMLElement
// on click
button.addEventListener('click', function (event) {
var rnd = Math.floor(Math.random() * image.length); // get random index
hideDivs(image); // hide all quotes
(image[rnd] as HTMLElement).style.display = 'block'; // show random quote
(event.target as HTMLElement).textContent = 'Click one more time!'; // set button tqext. event.target is the button you've clicked
})
您可能还希望正确键入hideDivs
:
// a function to hide all divs
const hideDivs = function (divs : HTMLCollection) {
for (var div of divs) {
(div as HTMLElement).style.display = 'none';
}
}
同时更新hideDivs()
函数。;)@Durga true,这不会导致错误(因为divs隐式键入为any
)。更新了答案:)谢谢你的帮助。编译成功,但现在所有div都出现了,console.log中的错误是“error TypeError:Cannot read property'children'of null”@katieer。。。您唯一使用的children
是w.children
,我没有碰它。。w
来自哪里?您确定它不是未定义的吗?w用于获取包含图像的包装的ID。var w=document.getElementById('wrapper');