我得到未捕获的类型错误:无法读取属性'选项'即使定义了元素id,也为null
I am getting Uncaught TypeError: Cannot read property 'options' of null even though element id defined
我是Javascript和HTML的新手。即使我在HTML中定义了元素,我也会遇到这个异常。有人能帮忙吗?我正试图根据用户的输入来绘制一个形状(最初是一个圆圈),比如形状类型、坐标、宽度、颜色等,这是我使用HTML中的数据列表来完成的。但无法获取在javascript函数"rendershape"中选择的数据列表形状的值。
以下是我的代码:
<!DOCTYPE html>
<html>
<title>Orchid School</title>
<body>
<form id="myForm" name="formName" onSubmit="rendershape();">
Enter a shape:<br>
<input list="shapes" id="shapeid" name="shapeName">
<datalist id="shapes">
<option value="Circle">
<option value="Square">
<option value="Rectangle">
<option value="polygon">
<option value="triangle">
</datalist>
<br><br>
Enter X-coordinate:
<br><br>
<input list="xcoordinates" name="xcoName">
<datalist id="xcoordinates">
<option value="50">
<option value="75">
<option value="100">
<option value="150">
<option value="200">
</datalist>
<br><br>
Enter Y-coordinate:
<br><br>
<input list="ycoordinates" name="ycoName">
<datalist id="ycoordinates">
<option value="50">
<option value="75">
<option value="100">
<option value="150">
<option value="200">
</datalist>
<br><br>
Enter colour:<br><br>
<input list="color" name-"colorName">
<datalist id="color">
<option value="Red">
<option value="Blue">
<option value="Orange">
<option value="Black">
<option value="Green">
</datalist>
<br><br>
Enter line width: <br><br>
<input list="width" name="WidhtName">
<datalist id="width">
<option value="1">
<option value="2">
<option value="3">
<option value="4">
<option value="5">
</datalist>
<br><br>
</form>
<button onclick="rendershape()">Draw shape</button><br><br>
您的浏览器不支持HTML5画布标记。
<script>
function rendershape()
{
document.write('IN JS');
var shape= document.getElementById("shapeid").options.value;
console.log(shape);
document.write(shape);
var xcoordinat=document.getElementById("xcoordinates").options.value;
console.log(xcoordinates);
var ycoordinate=document.getElementById("ycoordinates").options.value;
console.log(ycoordinates);
var width=document.getElementById("width").options.value;
if(shape=='Circle')
{
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(xcoordinat,ycoordinate,50,0,2*Math.PI);
ctx.stroke();
}
}
</script>
</body>
</html>
首先执行这个:document.write('IN JS');
,之后文档只包含IN JS
,然后擦除其他元素。之后,id为shapeid
的元素就不存在了。
更正代码中的以下几点,然后重试。
- 您没有
myCanvas
元素 - 不使用
options.value
,只使用value
-
删除
document.write
,它会清理您的页面,用于调试使用console.log
从tutorialspoint.com 获得帮助
更新:我认为w3resource最好使用它的可视化解释
请仔细查看您的代码,您需要放置'='而不是'-'
<input list="color" name="colorName">
相关文章:
- 如何在选项卡上定义属性'的主窗口对象
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- PhoneGap选项卡栏自定义字体,背景图案
- 在JavaScript中调用函数时自定义此选项
- 选项中包含数据的自定义标记
- 使用自定义选项从控制台运行JSlint
- 隐藏选择选项,并在单击定义的选项后显示它们
- 在 magento 中使用多个价格,但在更改自定义选项时不会更新
- 在带有 bootbox 的自定义对话框中添加选项以选择表单控件.js在 ASP.NET MVC 中
- ng-select 选项在与自定义指令一起使用时加倍
- 如何定义用作AngularJS过滤器的选择的“选定”选项
- Magento自定义选项-清除输入字段问题
- 使用定义的选项值定义grunt别名
- jQueryUI可拖动+可排序错误(无法读取未定义的属性'选项')
- 自定义选择框-选择选项时占位符中的数据图标未正确更新
- jQuery选项卡的自定义脚本
- 我得到未捕获的类型错误:无法读取属性'选项'即使定义了元素id,也为null
- JSON检索中选择框的额外未定义选项
- 通过下拉选项定义所需字段