我的代码中有更多的 document.getElementById,但是当我运行我的代码时,只有两个 document.getElementById (ctx1, ctx2) 获得其他值。我怎样才能达到其他人(在我的情况下为 ctx3)返回 true 并且我没有收到错误消息。这是我的演示代码:
演示
var ctx1=document.getElementById("data1").getContext("2d");
var ctx2 =document.getElementById("data2").getContext("2d");
var ctx3 =document.getElementById("data3").getContext("2d");
在这种情况下,ctx1 和 ctx2 获得值但 ctx3 没有,这就是为什么我在控制台中收到document.getElementById(...) is null错误消息的原因。我有一些尝试,但这些都失败了。
试图
1
if(ctx3 === null ||
ctx3 === undefined) {
return true;
}
2
if(document.getElementById("data3")..getContext("2d").value == null){
return true;
}
如果具有该 ID 的元素可能不存在,则需要拆分语句。你不能这样做:
// Not this
var ctx3 =document.getElementById("data3").getContext("2d");
...因为document.getElementById("data3")
可能会返回null
,然后尝试将其用于.getContext("2d")
. 所以与其:
var elm3 = document.getElementById("data3");
var ctx3 = elm3 && elm3.getContext("2d");
现在,如果id="data3"
您的文档中没有元素,elm3
并且ctx3
两者都是null
. 如果有,elm3
将引用元素和ctx3
2D 上下文。
如果你打算不止一次这样做,你可以给自己一个函数:
function getOptionalContext(id) {
var elm = document.getElementById(id);
return elm && elm.getContext("2d");
}
然后:
var ctx1 = getOptionalContext("data1");
var ctx2 = getOptionalContext("data2");
var ctx3 = getOptionalContext("data3");
旁注:每当您发现自己在写var1
, var2
, var3
, ... 时,请考虑改用数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句