我有一个javascript函数,可以将公历转换为jalali日期:
year=2019;
month=2;
day=6;
shamsi=gregorian_to_jalali(year,month,day);
document.write(shamsi[0]+ '/' +shamsi[1]+ '/' +shamsi[2]);
此结果告诉我:1397/12/4
出于某种原因,我想在多个标签中使用数据属性,例如:
<date year="2019" month="2" day="6"></date>
每个人都必须返回里面
主要功能是:
function gregorian_to_jalali(gy,gm,gd){
g_d_m=[0,31,59,90,120,151,181,212,243,273,304,334];
if(gy > 1600){
jy=979;
gy-=1600;
}else{
jy=0;
gy-=621;
}
gy2=(gm > 2)?(gy+1):gy;
days=(365*gy) +(parseInt((gy2+3)/4)) -(parseInt((gy2+99)/100)) +(parseInt((gy2+399)/400)) -80 +gd +g_d_m[gm-1];
jy+=33*(parseInt(days/12053));
days%=12053;
jy+=4*(parseInt(days/1461));
days%=1461;
if(days > 365){
jy+=parseInt((days-1)/365);
days=(days-1)%365;
}
jm=(days < 186)?1+parseInt(days/31):7+parseInt((days-186)/30);
jd=1+((days < 186)?(days%31):((days-186)%30));
return [jy,jm,jd];
}
答案 0 :(得分:0)
您可以使用data- *属性存储这些值。
<div id="date" data-year="2019" data-month="2" data-day="6"></div>
稍后,您可以使用HTMLElement.dataset
属性在javascript中读取这些值。
const dateElement = document.getElementById('date')
const year = dateElement.dataset.year // "2019"
const month = dateElement.dataset.month // "2"
const day = dateElement.dataset.day // "6"
此外,如果希望将转换后的日期打印在同一元素中,只需使用Node.textContent
进行设置。
dateElement.textContent = gregorian_to_jalali(year, month, day).join('/')
答案 1 :(得分:0)
您可以将它们放在JSON格式的单个属性中,然后可以解析JSON以获取值:
// Stub for dev
function gregorian_to_jalali(gy, gm, gd){
console.log(`From gregorian_to_jalali: ${gy}, ${gm}, ${gd}`);
}
// Get value from element and parse
function getValue(element) {
let {year, month, day} = JSON.parse(element.dataset.value);
return [year, month, day];
}
// Get values
console.log(getValue(document.querySelector('date')));
// Use in a function
gregorian_to_jalali(...getValue(document.querySelector('date')));
<date data-value='{"year":"2019","month":"2","day":"6"}'></date>
答案 2 :(得分:0)
这是一件令人着迷的作品!
const year = Number(dateElement.dataset.year) // "2019"
const month = Number(dateElement.dataset.month) // "2"
const day = Number(dateElement.dataset.day) // "6"
我想将其用于多个标签,例如:
<div id="date" class="date" data-year="2019" data-month="3" data-day="6"></div>
<div id="date" class="date" data-year="2019" data-month="4" data-day="7"></div>
<div id="date" class="date" data-year="2019" data-month="5" data-day="8"></div>
<div id="date" class="date" data-year="2019" data-month="6" data-day="9"></div>
<div id="date" class="date" data-year="2019" data-month="7" data-day="10"></div>
我知道document.getElementById()
一次仅支持一个名称,并且仅返回单个节点而不是节点数组。但它不适用于getElementsByClassName
或TagName