为什么我的div值不定义?

时间:2015-02-19 19:49:39

标签: javascript d3.js

我正在创建全局div元素,并为它们分配一个值来表示一周中的某一天。

var daysOfWeek = ['Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun']
var daysOfWeekNum = [1,2,3,4,5,6,0]

var dayOfWeek = myDiv.append('div')
    .classed('dayOfWeek', true)

var dayLabels = daysOfWeek.forEach(function(DoW, DoWN){
   dayOfWeek.append('div')
        .attr("value", function(){ return parseInt((DoW == 'Sun') ? DoWN = 0 : DoWN = DoWN + 1)})
        .text(DoW)
})

然后在脚本中,我运行它。

d3.selectAll('div.dayOfWeek')
    .on('click', function(){
        console.log(this)
        console.log(this.value)
    })

因此,当我运行console.log(this)时,输出如下所示:

<div class = "dayOfWeek" value="4">Thurs</div>

我的问题出在console.log(this.value)。当我尝试记录它时,我没有获得值。它只是给了我undefined。我错过了一些明显的东西吗

1 个答案:

答案 0 :(得分:2)

Divs在HTML中没有value属性,value属性不会映射到DOM中不存在的属性。

如果设置了属性,则必须读取属性以获取数据库。

由于div没有值属性,因此您不应该设置一个值。如果要将自定义数据添加到元素,请使用data-*属性。

&#13;
&#13;
document.querySelector('div').dataset.value = 1234;
alert(document.querySelector('div').dataset.value);
&#13;
<div>My div</div>
&#13;
&#13;
&#13;