[英]Typescript error "Property 'value' does not exist on type 'HTMLElement'", "Property 'onclick' does not exist on type 'Element'"
I am trying to put in a typescript file, then these "Property 'value' does not exist on type 'HTMLElement'", "Duplicate function implementation."我试图放入一个 typescript 文件,然后这些“属性‘值’在类型‘HTMLElement’上不存在”、“重复 function 实现”。 and "Property 'onclick' does not exist on type 'Element'" appear on my screen as compilation error but when I tried to run in javascript file it works very well.和“属性‘onclick’在‘元素’类型上不存在”作为编译错误出现在我的屏幕上,但是当我尝试在 javascript 文件中运行时,它工作得很好。 https://jsfiddle.net/chrismontage/onh51g93/12/ https://jsfiddle.net/chrismontage/onh51g93/12/
<label for = "password">New Password</label>
<input type="password" class = "input" id = "password1" value="">
<label for = "cnfm-password">Confirm Pasword</label>
<input type="password" class = "input" id = "password2">
<input onclick = "verifyPassword()" type="submit" value = "Save Changes"class = "btn" id = "myBtn">
<!-- The Modal -->
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<div class="modal-header">
<img src="/images/logo.png" alt="SAMPLE" width="120" class = "mx-auto">
<span class="close">×</span>
</div>
<div class="modal-body">
<h4 class = "text-center"><span id = "message1"></span></h4>
</div>
<div class="modal-footer mx-auto">
<button class = "btn" id = "confirm">Okay</button>
</div>
</div>
</div>
ts file文件
function verifyPassword(){
var pw1 = document.getElementById("password1");
var pw2 = document.getElementById("password2");
// Get the modal
var modal = document.getElementById("myModal");
// Get the button that opens the modal
var btn1 = document.getElementById("myBtn");
var confirm = document.getElementById("confirm");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
btn1.onclick = function () {
modal.style.display = "block";
//check empty password field
if(pw1.value == "") {
document.getElementById("message1").innerHTML = "Please put your new password!";
return false;
}
//minimum password length validation
if(pw1.value.length < 8) {
document.getElementById("message1").innerHTML = "Password length must be atleast 8 characters";
return false;
}
//maximum length of password validation
if(pw1.value.length > 15) {
document.getElementById("message1").innerHTML = "Password length must not exceed 15 characters";
return false;
} else {
if(pw1.value == pw2.value){
document.getElementById("message1").innerHTML= "Passwords match!";
}
else {
document.getElementById("message1").innerHTML= "Passwords not match!";
}
}
}
confirm.onclick = function () {
modal.style.display = "none";
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
}
/* The Modal (background) */
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
padding-top: 100px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}
/* Modal Content */
.modal-content {
position: relative;
background-color: #fefefe;
margin: auto;
padding: 0;
border: 1px solid #888;
max-width: 40%;
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
-webkit-animation-name: animatetop;
-webkit-animation-duration: 0.4s;
animation-name: animatetop;
animation-duration: 0.4s
}
/* Add Animation */
@-webkit-keyframes animatetop {
from {top:-300px; opacity:0}
to {top:0; opacity:1}
}
@keyframes animatetop {
from {top:-300px; opacity:0}
to {top:0; opacity:1}
}
/* The Close Button */
.close {
color: white;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: $color5;
text-decoration: none;
cursor: pointer;
}
.modal-header {
background-color: $color1;
color: white;
text-align: center;
}
.modal-header h2 {
color: $color1;
text-align: center;
}
.modal-body {
padding: 2px 16px;
}
.modal-body h4 {
font-family: $font1;
font-weight: normal;
color: $color4;
font-size: 20px;
}
.modal-footer {
padding: 2px 16px;
color: white;
}
.modal-footer .btn {
background-color: $color1;
font-family: $font1;
font-weight: normal;
color: $color3;
}
.modal-footer .btn:hover{
color: $color5;
}
Have you tried to follow: https://stackoverflow.com/a/12990166/13309686您是否尝试过关注: https://stackoverflow.com/a/12990166/13309686
The code would look like this:代码如下所示:
function verifyPassword(){
var pw1 = (<HTMLInputElement>document.getElementById("password1")).value;
var pw2 = (<HTMLInputElement>document.getElementById("password2")).value;
// Get the modal
var modal = <HTMLInputElement>document.getElementById("myModal");
// Get the button that opens the modal
var btn1 = <HTMLInputElement>document.getElementById("myBtn");
var confirm = <HTMLInputElement>document.getElementById("confirm");
// Get the <span> element that closes the modal
var span = <HTMLInputElement>document.getElementsByClassName("close")[0];
btn1.onclick = function () {
modal.style.display = "block";
//check empty password field
if(pw1 == "") {
document.getElementById("message1").innerHTML = "Please put your new password!";
return false;
}
//minimum password length validation
if(pw1.length < 8) {
document.getElementById("message1").innerHTML = "Password length must be atleast 8 characters";
return false;
}
//maximum length of password validation
if(pw1.length > 15) {
document.getElementById("message1").innerHTML = "Password length must not exceed 15 characters";
return false;
} else {
if(pw1 == pw2){
document.getElementById("message1").innerHTML= "Passwords match!";
}
else {
document.getElementById("message1").innerHTML= "Passwords not match!";
}
}
}
confirm.onclick = function () {
modal.style.display = "none";
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
}
It looks like DOM typing declarations are missing on your Typescript project.您的 Typescript 项目中似乎缺少 DOM 类型声明。 Could you also post your tsconfig.json
?你也可以发布你的tsconfig.json
吗?
You might need to include dom
into your tsconfig.json
file if that's not present.如果不存在,您可能需要将dom
包含到您的tsconfig.json
文件中。
"lib": ["dom"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.