从javascript修改div的data donut属性

从javascript修改div的data donut属性,javascript,jquery,html,css,d3.js,Javascript,Jquery,Html,Css,D3.js,我的javascript var currentMonth= new Date().getMonth(); if (demo.length >= currentMonth){ var d3data = demo[currentMonth]; //输出将是[“23”,“19”] 现在我需要将输出值更新为#donut和#donut1(data donut=“”) 值来自json,可能会根据月份发生变化 作为参考,我增加了小提琴 现在的 ///这里是数据甜甜圈值 目标

我的javascript

 var currentMonth= new Date().getMonth();
    if (demo.length >= currentMonth){
    var d3data = demo[currentMonth];
//输出将是
[“23”,“19”]

现在我需要将输出值更新为
#donut和#donut1(data donut=“”)

值来自json,可能会根据月份发生变化

作为参考,我增加了小提琴


现在的
///这里是数据甜甜圈值
目标
非常感谢您的帮助

这会有用的

    obj = ["23", "19"];
    var keys = Object.keys(obj);

    for (var i = 0,j=1; i < keys.length; i++,j++) {
       var val = obj[keys[i]];
       document.getElementById("donut"+j).setAttribute("data-donut", val); 
   
    }

   

obj=[“23”,“19”];
var keys=Object.keys(obj);
对于(变量i=0,j=1;i

现在的
///这里是数据甜甜圈值
目标

看起来您想要修改divs的数据圆环属性。希望这会有所帮助

document.getElementsById(“圆环”).setAttribute(“数据圆环”,“圆环”); document.getElementsById(“donut1”).setAttribute(“数据甜甜圈”,“数据甜甜圈”)

这不是json格式[“23”,“19”]

e、 这是一个数组

var d3data = ["23", "19"]; 

$('#donut').data('donut', d3data[0]); 

$('#donut1').data('donut',d3data[1]); 

您可以使用它来分配数组中的值(假设数组是从json解析后的结果)

数组的第一个值将分配给第一个div,第二个值分配给第二个div


请参见

$(“#donut”).data('donut',23)?感谢您的回答,问题是值来自json,它可能会根据月份发生变化。对于没有正确解释问题的原因,抱歉,值来自json,它可能会根据月份发生变化,因此请您帮助我,无论值来自何处……收到值后,将其存储在变量中,并按照上述语法使用该变量。从变量中填充值时仅排除双引号示例:document.getElementsById(“圆环”).setAttribute(“数据圆环”);我试过你的例子,但它不起作用。**如果我做错了请告诉我**
var currentmount=new Date().getMonth();如果(demo.length>=currentmount){debugger;var d3data=demo[currentmount];console.log(d3data);\\输出将是[“23”,“19”]document.getElementById(“donut”).setAttribute(“data donut”,d3data[0]);document.getElementById(“donut”).setAttribute(“data donut”,d3data[1]);console.log(d3data[1])
很抱歉没有正确解释问题值来自json,它可能会根据月份而变化,因此请您帮助mecheck检查更新的代码,并且您必须按顺序指定div名称,如donut1、donut2等。这样您将得到所需的结果。我收到此错误Uncaught TypeError:Cannot read property'setAttribute'当然可以,你能在代码片段中显示你更新的代码吗?所以我很难理解。对不起,或者我在这把小提琴中更新了你的代码[仍然收到相同的错误小提琴工作正常,但它对我没有帮助,怎么办?我能将d3dat值分配给x吗?'比如
var currentmount=new Date().getMonth();如果(demo.length>=currentmount){var d3data=demo[currentmount];//输出将是[“23”,“19”]var x=[];d3data=x;$(“div[data donut]”)。每个(函数(i){$(this.attr('data-donut',x[i]););
我正在console.log中获取值,但是div中的值没有更新,它在js fiddle中工作,而不是在我的代码中。代码必须在文档完全加载时执行,就像在JSFiddle中一样。我已经将此添加到了答案中(不是在JSFiddle中,因为它已经这样做了)。正如您所建议的那样,我尝试了**var currentmount=new Date().getMonth();if(demo.length>=currentmount){debugger;var d3data=demo[currentmount];console.log(d3data);//假设这会导致d3data=[“23”,“19”];$(document).load(function(){$(“div[data donut]”)。each(function(i){$(this.attr('data-donut',d3data[i]);});}**但仍然不起作用,是我在这里做错了吗(我正在控制台中获取值)
$(文档)。准备好了
而不是
$(文档)。在脚本标记中加载
,在结尾处的body标记中加载
。我正在从您的解决方案中获取值,但它没有更新div,您能帮助我$('#donut').html(d3data[0]);$('#donut1').html(d3data[1]吗;我得到的值是html中的数字,但它显示的图表[“23”,“19”]看起来像一个有效的json数组
var d3data = ["23", "19"]; 

$('#donut').data('donut', d3data[0]); 

$('#donut1').data('donut',d3data[1]); 
var d3data = demo[currentMonth];
// assuming that this results in d3data = ["23", "19"];

$(document).ready(function() {
    $("div[data-donut]").each(function(i) {
       $(this).attr('data-donut', d3data[i]);
    });
});