Javascript Can';t向对象添加属性(无法设置未定义的属性)

Javascript Can';t向对象添加属性(无法设置未定义的属性),javascript,object,properties,set,add,Javascript,Object,Properties,Set,Add,我在向对象添加属性时遇到问题。我希望它,当你点击like时,它会在“scores”-对象内创建一个新属性,然后将该值增加1。但我在执行此操作时遇到了以下错误: 未捕获类型错误:无法设置未定义的属性“(十六进制代码)” HTML 十六进制代码: 生成 喜欢 不喜欢 JAVASCRIPT var result = document.getElementById('demo').innerHTML; var hex; var scores = {} function generate () {

我在向对象添加属性时遇到问题。我希望它,当你点击like时,它会在“scores”-对象内创建一个新属性,然后将该值增加1。但我在执行此操作时遇到了以下错误:

未捕获类型错误:无法设置未定义的属性“(十六进制代码)”

HTML

十六进制代码:

生成 喜欢 不喜欢 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();
}
var result=document.getElementById('demo').innerHTML;
var hex;
变量得分={}
函数生成(){
变量长度=3,
charset=“ABCDEF0123456789”,
retVal=“”;
对于(变量i=0,n=charset.length;i

链接到fiddle:

您已将脚本包含在html的
中,而未将其包装在
窗口中。onload
。这将使这条线失败

var result = document.getElementById('demo').innerHTML;
因为在运行时找不到该元素,这进一步导致由于上述中断错误而从未定义
score

请参阅html的
中包含的工作脚本。或者,您可以将代码的第一部分包装在
window.onload=function(){}
中,或者将

var result = document.getElementById('demo').innerHTML;

generate()
函数中。

您已将脚本包含在html的
中,而没有将其包装在
窗口中。onload
。这将使这条线失败

var result = document.getElementById('demo').innerHTML;
因为在运行时找不到该元素,这进一步导致由于上述中断错误而从未定义
score

请参阅html的
中包含的工作脚本。或者,您可以将代码的第一部分包装在
window.onload=function(){}
中,或者将

var result = document.getElementById('demo').innerHTML;

generate()
函数中。

generate()
中设置了“hex”,但直到like()结束时才调用generate,这意味着第一次调用like()时,hex将没有值。您需要初始化十六进制。而不是
var hex更改为
var hex=0
这是一个实际的错误,它会破坏以下内容:
uncaughttypeerror:cannotread属性'innerHTML'为null
如果将代码放入javascript中,代码将正常工作。在JSFIDLE内的Javascript代码区域中更改设置@迈克尔:好的,谢谢!我会的!“hex”在
generate()
中设置,但直到like()结束时才调用generate,这意味着第一次调用like()时,hex将没有值。您需要初始化十六进制。而不是
var hex更改为
var hex=0
这是一个实际的错误,它会破坏以下内容:
uncaughttypeerror:cannotread属性'innerHTML'为null
如果将代码放入javascript中,代码将正常工作。在JSFIDLE内的Javascript代码区域中更改设置@迈克尔:好的,谢谢!我会的!谢谢!非常新的编程,从这个网站惊人的支持!谢谢!非常新的编程,从这个网站惊人的支持!