为txt文件生成标题

我正在为给定文件生成一个默认标头,我希望发件人 ID 有 4 个字符,发件人名称有 45 个字符。如果它们分别小于 4 和 45,我需要输入空格才能有 4 或 45 个字符。我怎样才能做到这一点?在下图中,您可以看到我做空白文件时没有填写必要的空格。即使我在发件人 ID 或发件人姓名上写了一些东西,也不会添加任何内容。


我究竟做错了什么?


function download(fileName, text) {

    let element = document.createElement('a');

    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));

    element.setAttribute('download', fileName);


    element.style.display = 'none';

    document.body.appendChild(element);


    element.click();


    document.body.removeChild(element);

}

document.getElementById("generate").addEventListener("click", function(){

    

    // Generate .txt file header

    

    //force 4 chars

    let id = document.getElementById("senderID");

    if (id.textContent.length < 4) {


            id.textContent += ' ';


    }

    

    

    //force 45 chars

    let name = document.getElementById("senderName");

    if (name.textContent.length < 45) {

        name.textContent += ' ';

    }

    

    let header = "HDRPB" + id.textContent + name + "01.10";

    let body = document.getElementById("fileContents").textContent;

    

    

    let text = header;

    

    let fileName = document.getElementById("fileName").value + ".txt";

    

    download(fileName, text);

}, false);

<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <link rel="stylesheet" href="css/site.css">

    <title>Generator</title>

  </head>

  <body>

    <div class="container">

      <div class="row">

        <div class="col-2 p-0 mt-2">

          <label for="senderID" class="font-weight-bold">Sender ID:</label>

          <input id="senderID" type="text" maxlength="4" size="4"/>

        </div>

        <div class="col-6 p-0 mt-2">

          <label for="senderName" class="font-weight-bold">Sender Name:</label>

          <input id="senderName" type="text" maxlength="45" size="45"/>

        </div>

      </div>

http://img4.mukewang.com/60c319f80001545b13650126.jpg

犯罪嫌疑人X
浏览 242回答 1
1回答

繁花不似锦

考虑以下代码:function genId(seed) {&nbsp; var result = new Array(4);&nbsp; for (var i = 0; i < 4; i++) {&nbsp; &nbsp; result[i] = seed[i] || "&nbsp;";&nbsp; }&nbsp; return result.join("");}function genName(seed) {&nbsp; var result = new Array(45);&nbsp; for (var c = 0; c < 45; c++) {&nbsp; &nbsp; result[c] = seed[c] || "&nbsp;";&nbsp; }&nbsp; return result.join("");}document.getElementById("genHead").addEventListener("click", function() {&nbsp; var i = document.getElementById("hid").value;&nbsp; var n = document.getElementById("hname").value;&nbsp; var header = genId(i) + genName(n);&nbsp; document.getElementById("results").innerHTML = header;});#results {&nbsp; font-family: monospace;&nbsp; border: 1px solid #ccc;&nbsp; display: inline-block;}<p>ID: <input type="text" id="hid" /></p><p>Name: <input type="" id="hname" /></p><button id="genHead">Generate Header</button><div id="results"></div>在这个例子中,我创建了一个特定数量字符的数组。无论如何,字符串都被认为是一个字符数组。我$nbsp;用来表示 HTML 中的空格,但您可以使用' '或" "。总会有结果,因为result[c] = seed[c] || "&nbsp;";如果seed那个位置有字符,就会result在同一个位置输入。否则它将进入 No Break Space 或您想要的字符。你也可以这样做:function formatText(t, n, c) {&nbsp; if(t == undefined){&nbsp; &nbsp; return "";&nbsp; }&nbsp; if(n == undefined){&nbsp; &nbsp; n = 45;&nbsp; }&nbsp; if(c == undefined){&nbsp; &nbsp; c = " ";&nbsp; }&nbsp; var r = new Array(n);&nbsp; for (var i = 0; i < n; i++) {&nbsp; &nbsp; r[i] = t[i] || c;&nbsp; }&nbsp; return r.join("");}然后像这样使用:var i = formatText("12", 4, " ");var n = formatText("test", 45, " ");希望这可以帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript