原生javascript实现两个select联动和日期设置

<html>
<head>
<script type="text/javascript">
var regions = {}
var tableHeader = ["name", "sex"]
var tableData = [["lize", "male"], ["lixin", "female"]]

function load()
{
    regions = {"HONEKONG": ["a1", "a2"], "JAPAN": ["b1", "b2"]}
    var regionsKey = Object.keys(regions)
    var regoinSelect = generateSelect("region", regionsKey)
    regoinSelect.onchange = changeRegion
    var tableSelect = generateSelect("table", regions[regionsKey[0]])
    var dateInput = generateDateInput();
    var queryButton = generateQueryButton();
    var downloadButton = generateDownloadButton();
    var table = generateTable();
    document.body.appendChild(regoinSelect);
    document.body.appendChild(tableSelect);
    document.body.appendChild(dateInput);
    document.body.appendChild(queryButton);
    document.body.appendChild(downloadButton);
    document.body.appendChild(table);
}

function changeRegion(){
    var regionSelect = document.getElementById("region");
    var tableSelect = document.getElementById("table");
    tableSelect.length = 0;
    generateOption(tableSelect, regions[regionSelect.value])
}

function clickQuery(){
    var table = document.getElementById("table").value;
    var date = document.getElementById("date").value;
    date = date.replace(/-/g, '');
    console.log(table + date)
}

function clickDownload(){
    let csvStr = "";
    for(let i=0; i<tableHeader.length; i++){
        csvStr = csvStr + tableHeader[i] + "\t" + ",";
    }
    csvStr = csvStr + "\n";
    for(let i=0; i<tableData.length; i++){
        for(let j=0; j<tableData[i].length; j++){
            csvStr = csvStr + tableData[i][j] + "\t" + ",";
        }
        csvStr = csvStr + "\n";
    }
    let table = document.getElementById("table").value;
    let date = document.getElementById("date").value;
    let fileName = table + "_" + date + ".csv";
    downLoad(csvStr, fileName)
}

function downLoad(content,fileName){
        var aEle = document.createElement("a");
        blob = new Blob([content]); 
        aEle.download = fileName;
        aEle.href = URL.createObjectUrl(blob);
        //aEle.href = content;
        aEle.click();
}

function generateSelect(id, datalist){
    select = document.createElement("select")
    select.id = id
     return generateOption(select, datalist)
}

function generateOption(select, datalist){
    for (var i=0; i<datalist.length; i++){
        option = document.createElement("option")
        option.value = datalist[i]
        option.text = datalist[i]
        if( i == 0){
            option.selected = true
        }
        select.appendChild(option)
     }
     return select
}

function generateDateInput(){
    var dateInput = document.createElement("input");
    dateInput.type = "date";
    dateInput.id = "date";
    var time = new Date();
    var day = ("0" + time.getDate()).slice(-2);
    var month = ("0" + (time.getMonth() + 1)).slice(-2);
    var today = time.getFullYear() + "-" + (month) + "-" + (day);
    dateInput.value = today;
    dateInput.max = today;
    return dateInput;
}

function generateQueryButton(){
    queryButton = document.createElement("button");
    queryButton.id = "query";
    queryButton.innerText = "QUERY";
    queryButton.onclick = clickQuery;
    return queryButton;
}

function generateDownloadButton(){
    downloadButton = document.createElement("button");
    downloadButton.id = "download";
    downloadButton.innerText = "DOWNLOAD";
    downloadButton.onclick = clickDownload;
    return downloadButton;
}

function generateTable(){
    var table = document.createElement("table");
    table.border = 1;
    generateTableHeader(table);
    generateTableBody(table);
    return table;
}

function generateTableHeader(table){
    console.log(tableHeader);
    var tr = document.createElement("tr");
    for(var i=0; i<tableHeader.length; i++){
        var th = document.createElement("th");
        th.innerText = tableHeader[i];
        tr.appendChild(th);
    }
    table.appendChild(tr);
}

function generateTableBody(table){
    console.log(tableData);
    for(var i=0; i<tableData.length; i++){
        var tr = document.createElement("tr");
        for(var j=0; j<tableData[i].length; j++){
            var td = document.createElement("td");
            td.innerText = tableData[i][j];
            tr.appendChild(td);
        }
        table.appendChild(tr);
    }
}

</script>
</head>

<body οnlοad="load()">
</body>

</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值