无法向对象添加属性(无法设置未定义的属性)

时间:2016-02-15 19:57:56

标签: javascript object properties set add

我在向对象添加属性时遇到问题。我想要它,当你点击它时,它将在"得分" -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();
}

链接到小提琴:https://jsfiddle.net/elliotsoomro/o0kuwc0d/4/

1 个答案:

答案 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; 函数中。