javascript - JS 未推送到数组

标签 javascript asp.net arrays push streamwriter

尝试将一些坐标以及用户在表单中指定的一些内容推送到名为“seatsArray”的数组中。这是我的代码:

<div>
<img onLoad="shiftzoom.add(this,{showcoords:true,relativecoords:true,zoom:100});" id="image" src="plan1.bmp" width="1024" height="768">
</div>

<script type="text/javascript">
var seatsArray = [];
</script>
<br><input id="backnave" type="radio" name="area" value="backnave" /> Back Nave<br>
<input id="frontnave" type="radio" name="area" value="frontnave" /> Front nave<br>
<input id="middlenave" type="radio" name="area" value="middlenave" /> Middle nave<br>
<input type="radio" id="standardseat" name="seat" /><label for="radio1">Standard</label><br>
<input type="radio" id="wheelchairseat" name="seat" checked="checked" /><label for="radio2">Wheelchair</label><br>
<form id="my_form" action="savetext.aspx" method="post" onsubmit="return prepare()">
  <input type="text" id="file_name" name="file_name" rows="1" cols="20" />
  <input type="hidden" name="seatsArray" />
  <input type="submit" value="Save" />
</form>

<form id="my_form" action="savetext.aspx" method="post" onsubmit="return prepare()">
  <input type="text" id="file_name" name="file_name" rows="1" cols="20" />
  <input type="hidden" name="seatsArray" />
  <input type="submit" value="Save" />
</form>

<script type="text/javascript">
function prepare();
{
  document.getElementById('seatsArray').value = seatsArray.join();
  return true;
}
</script>

<script type="text/javascript">
var coordinates = document.getElementById("image");
coordinates.onclick = function(e) {
e = e || window.event;

if (e && e.pageX && e.pageX) {
            e.posX = e.pageX;
            e.posY = e.pageY;

        } else if (e && e.clientX && e.clientY) {
            var scr     = {x:0,y:0},
                object  = e.srcElement || e.target;
            //legendary get scrolled
            for (;object.parentNode;object = object.parentNode) {
                scr['x'] += object.scrollLeft;
                scr['y'] += object.scrollTop;
            } 
            e.posX = e.clientX + scr.x;
            e.posY = e.clientY + scr.y;
        } 

var desc = "";
if(document.getElementByID("backnave").checked) {
  desc = "BN, "+desc;
} else if(document.getElementByID("middlenave").checked) {
  desc = "MN, "+desc;
} else if(document.getElementByID("frontnave").checked) {
  desc = "FN, "+desc;
}

if(document.getElementById('wheelchairseat').checked) {
  //Wheelchair seat is checked
  desc = "Wheelchair "+desc;
}

seatsArray.push(desc + e.posX, e.posY);

}
</script>

但是根本没有任何东西被推送到数组中。我可以这么说,因为我正在使用以下 ASP.NET 将数组写入文本文件:

<script runat="server">
    protected void Page_Load(object sender, EventArgs e) 
    {
        string path = Server.MapPath(".")+"/"+Request.Form["file_name"] + ".txt";
        if (!File.Exists(path)) 
        {
            using (StreamWriter sw = File.CreateText(path)) 
            {
                sw.WriteLine(Request.Form["seatsArray"]);
                sw.WriteLine("");
            }   
        }

        using (StreamReader sr = File.OpenText(path)) 
        {
            string s = "";
            while ((s = sr.ReadLine()) != null) 
            {
                Response.Write(s);
            }
        }
    }
</script>

根据用户在“file_name”形式中输入的内容,文本文件的名称是正确的。正如您所看到的,我将 SeatArray 设置为隐藏表单对象,这就是 ASP.NET 尝试调用的内容。

JavaScript 中的某些内容是否顺序错误或其他什么?因为我无法让它填充该文本文件。

谢谢!

最佳答案

在浏览器中,检查 JavaScript 错误。 Firefox/IE 报告 2。 你有一个不应该在那里的分号。 => 函数准备();

document.getElementById("图像");返回 null,因此坐标.onclick 失败

我建议在 Firefox 中使用 firebug 进行调试,或者使用 ie8 的开发人员工具(按 F12)

编辑: 请确保在使用前将席位数组声明为数组。

...

<脚本类型=“text/javascript”>

席位数组 = [];//插入这一行

函数准备() {

...

关于javascript - JS 未推送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310426/

相关文章:

javascript - 了解代码是在 NodeWebkit 中还是仅在浏览器中

javascript - 如何避免使用 Object.assign?

java - 输入数组而不知道其大小

java - 正确使用 toString 打印数组?

javascript - 为什么socket.join在connection.query中不起作用?

javascript - 如果值为 null,则防止调用 getJson

asp.net 日期选择器

c# - 用户 'IIS APPPOOL\ASP.NET v4.0' 登录失败

javascript - 如何在aspx页面上挂接默认的beforeunload事件?

arrays - 一次递增两个数组元素,使它们都等于最大值