我在向对象添加属性时遇到问题。我想要它,当你点击它时,它将在"得分" -object中创建一个新属性,然后将该值递增1。但是这样做时我得到了这个错误:
未捕获的TypeError:无法设置属性'(十六进制代码)'未定义的
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();
}
答案 0 :(得分:3)
您已将脚本包含在html的write('Current value for mySetting: ' + Office.context.document.settings.get('settings1'));
// Function that writes to a div with id='message' on the page.
function write(message){
document.getElementById('message').innerText += message;
}
中,而不将其包含在<head>
中。这将使此行失败
window.onload
因为在运行时找不到该元素,这导致var result = document.getElementById('demo').innerHTML;
由于上述错误而导致永远不会被定义。
请参阅h score
中包含的工作脚本this updated fiddle。或者,您可以将代码的第一部分包装在<body>
中,或者只是放置
window.onload = function() {}
在var result = document.getElementById('demo').innerHTML;
函数中。