错误TS2339:JavaScript到类型脚本错误

错误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

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 = 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');