【发布时间】:2016-02-15 19:57:56
【问题描述】:
我在向对象添加属性时遇到问题。我希望它,当您单击喜欢时,它将在“分数”对象内创建一个新属性,然后将该值加一。但是这样做时我收到了这个错误:
未捕获的类型错误:无法设置未定义的属性“(十六进制代码)”
HTML
<p style="display: inline;">Hex-code: </p>
<input id="demo" type="text">
<button onclick="generate()">Generate</button>
<div id="showcase" style="background: #FFF; width: 200px; height: 200px; margin: 20px; border-radius: 3px;"></div>
<button onclick="like()">Like</button>
<button onclick="dislike()">Dislike</button>
JAVASCRIPT
var result = document.getElementById('demo').innerHTML;
var hex;
var scores = {}
function generate () {
var length = 3,
charset = "ABCDEF0123456789",
retVal = "";
for (var i = 0, n = charset.length; i < length; ++i) {
retVal += charset.charAt(Math.floor(Math.random() * n));
}
finalVal = "#" + retVal;
document.getElementById('demo').value = finalVal;
document.getElementById('showcase').style.backgroundColor = finalVal;
return hex = retVal;
}
function like () {
scores[hex] = 0;
scores[hex] += 1;
return generate();
}
【问题讨论】:
-
"hex"设置在
generate()中,但是直到like()结束才调用generate,也就是说第一次调用like()时,hex不会有值.你需要初始化十六进制。而不是var hex;更改为var hex=0; -
这是破坏之后一切的实际错误:
Uncaught TypeError: Cannot read property 'innerHTML' of null -
如果您将代码放入 javascript 中,您的代码将起作用。更改 jsfiddle 内的 Javascript 代码区域中的设置。 Working code
-
@Michael 好的,谢谢!我会这样做的!
标签: javascript object properties set add