英文:
jquery to typescriptconversion giving error
问题
遇到将以下 jQuery 代码转换为 TypeScript 时出错的问题:
$("#reqDate-ev").val(this.selection.requestDt);
如果将其拆分为两行,则可以正常工作,没有任何错误:
var b: any = document.getElementById("reqDate-ev");
b.value = this.selection.requestDt;
在单行中这样做的问题是什么?
英文:
Getting error while converting below jquery code to type script
$("#reqDate-ev").val(this.selection.requestDt);
If I split it into two lines its working without any error
var b:any = document.getElementById("reqDate-ev");
b.value = this.selection.requestDt;
Whats the issue in doing it in single line?
答案1
得分: 2
如果没有具有 id="reqDate-ev"
的元素,则 document.getElementById("reqDate-ev")
的值将为 null
。这是第一个代码中警告你的内容。
然而,在第二个代码片段中,你将值强制转换为 any
类型,因此 TypeScript 不关心变量 b
内部的内容。
在访问元素值之前最好先检查元素是否存在。
在 JQuery 中,$("#reqDate-ev")
返回的是一个对象实例,而不是实际的 DOM 元素。所以,当你在实例上调用 val()
函数时,该库会在内部检查元素是否存在。
英文:
If there is no element with id="reqDate-ev"
, the value of document.getElementById("reqDate-ev")
is going to be null
. That is what it warns you in the first code.
Whereas, in the second code snippet, you typecast the value to any
type, so Typescript does not care about the content inside the variable b
.
It's always better to do have an existence check on the element before accessing its value.
In JQuery, $("#reqDate-ev")
returns an object instance and not the actual DOM element. So, when you call val()
function on the instance, the library internally checks for the existence of the element.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论