使用具有多种形式的Javascript写入文本文件

Writing to a text file using Javascript with multiple forms

本文关键字:文本 文件 Javascript 多种形式      更新时间:2023-09-26

我的代码是带JavaScript的HTML,我可以使用JavaScript(客户端)写入文本文件,但这是基于1项的。我想要多种形式,但不知道最好的方法是什么?我的代码在下面。我正在有效地尝试让用户能够为他们的策略引用写一条评论,但我的编码知识不是很好。

<script language='JavaScript'>
    function WriteToFile() {
        try {
            var t = document.data.comments.value;
            var p = document.getElementById('policynum').innerHTML;
            var msg = p + " | " + t;
            var fso, s;
            fso = new ActiveXObject("Scripting.FileSystemObject");
            s = fso.OpenTextFile("C:''Test''Logfile.txt", 8, true);
            s.writeline(msg);
            s.Close();
alert("Comment Saved!");
        }
        catch (err) {
            var strErr = 'Error:';
            strErr += ''nNumber:' + err.number;
            strErr += ''nDescription:' + err.description;
            document.write(strErr);
    }
} 

我的HTML表单如下,但实际上我会有一个政策参考列表,用户可以在其中输入他们的评论,评论将保存到带有相关政策参考的文本文件中。

    <form action="test.hta" method="post" name="data"> 
<tr align = left><td align = center id = "policynum">A12345678A01</td>
<td align = center id = td1>Testing</td><td align = center id = td1>
<textarea name="comments">this is my comment </textarea><br> 
<input type=button value="Save Comment" OnClick="WriteToFile(this.form)">
</form> 
    <form action="test.hta" method="post" name="data"> 
<tr align = left><td align = center id = "policynum">A12345678A02</td>
<td align = center id = td1>Testing</td><td align = center id = td1>
<textarea name="comments">this is my comment </textarea><br> 
<input type=button value="Save Comment" OnClick="WriteToFile(this.form)">
</form> 

我想我需要添加一些东西,这样当OnClick函数与正确的表单相关时,我也需要确保每个表单名称不同?

我可能错了,但我认为你想保存td#policynum的注释和字符串,对吧?

如果是这样的话,唯一的错误就是html。我在IE11上尝试了以下操作,结果成功了:

<form action="test.hta" method="post" name="data"> 
    <table>
        <tr align="left"></td>
            <td align="center" id="policynum">A12345678A01</td>
            <td align="center" id="td1">Testing</td>
            <td align="center" id="td1"></td>
        </tr>
    </table>
    <textarea name="comments">this is my comment</textarea><br> 
    <input type="button" value="Save Comment" OnClick="WriteToFile(this.form)">
</form>

更新

在你发表评论后,我想我知道你的代码出了什么问题。我以为你只是在问题中贴了一张表格。然而

如果您的浏览器支持querySelector,这将非常容易:

<form action="test.hta" method="post" name="data"> 
    <table>
        <tr align="left"></td>
            <td align="center" name="policynum">A12345678A01 B1</td>
            <td align="center" id="td1">Testing</td>
            <td align="center" id="td1"></td>
        </tr>
    </table>
    <textarea name="comments">this is my comment</textarea><br> 
    <input type="button" value="Save Comment" OnClick="WriteToFile(this.form)">
</form>

因此,您可以按名称动态读取policynum:

function WriteToFile(f) { //added the form you clicked from
    try {
        var t = f.comments.value;
        var p = f.querySelector('[name="policynum"]').innerHTML; //readout the policynum by name tag
        var msg = p + " | " + t;
        var fso, s;
        fso = new ActiveXObject("Scripting.FileSystemObject");
        s = fso.OpenTextFile("C:''Test''Logfile.txt", 8, true);
        s.writeline(msg);
        s.Close();
        alert("Comment Saved!");
    }
    catch (err) {
        var strErr = 'Error:';
        strErr += ''nNumber:' + err.number;
        strErr += ''nDescription:' + err.description;
        document.write(strErr);
    }
}

顺便说一下:您正在多次使用某些id。这是不允许的。

id属性为元素提供文档范围的唯一标识符。

请参阅:wikipedia html属性