我正在创建全局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
。我错过了一些明显的东西吗
答案 0 :(得分:2)
Divs在HTML中没有value
属性,value
属性不会映射到DOM中不存在的属性。
如果设置了属性,则必须读取属性以获取数据库。
由于div没有值属性,因此您不应该设置一个值。如果要将自定义数据添加到元素,请使用data-*
属性。
document.querySelector('div').dataset.value = 1234;
alert(document.querySelector('div').dataset.value);
&#13;
<div>My div</div>
&#13;