Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
锚定中的Javascript不与IE一起工作_Javascript_Html_Anchor - Fatal编程技术网

锚定中的Javascript不与IE一起工作

锚定中的Javascript不与IE一起工作,javascript,html,anchor,Javascript,Html,Anchor,我试图通过锚标记和javascript重定向到我的ServletController 现在它在Google chrome中工作,而不是在IE中。到目前为止,我在网络上浏览了两天,发现IE不能很好地与动态元素setAttribute一起工作,因此我不得不切换到使用“实际”属性并为其赋值 假设锚创建一个动态表单并提交表单,然后向我的Servlet创建一个新请求,但由于某种原因,当我在javascript中单击锚时,它什么也不做。然而,当我点击chrome中的锚时,它会正确地将我重定向到下一页,而不会

我试图通过锚标记和javascript重定向到我的ServletController

现在它在Google chrome中工作,而不是在IE中。到目前为止,我在网络上浏览了两天,发现IE不能很好地与动态元素setAttribute一起工作,因此我不得不切换到使用“实际”属性并为其赋值

假设锚创建一个动态表单并提交表单,然后向我的Servlet创建一个新请求,但由于某种原因,当我在javascript中单击锚时,它什么也不做。然而,当我点击chrome中的锚时,它会正确地将我重定向到下一页,而不会出现任何问题

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Account</title>
<meta name="description" content="eTeam Bank">
<meta name="author" content="Abraham Cabrera">
<link rel="stylesheet" type="text/css" href="css/mystyles.css">

<!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
<script type="text/javascript"> 
function anchorRedirect(username, user_id, operation) {
"use strict";
var form = document.createElement("form");
form.name="form";
form.id="form";
form.method = "post";
form.action = "ServletController";

var hiddenField1 = document.createElement("input");
hiddenField1.type = "hidden";
hiddenField1.name = "username";
hiddenField1.value = username;
form.appendChild(hiddenField1);

var hiddenField2 = document.createElement("input");
hiddenField2.type = "hidden";
hiddenField2.name = "user_id";
hiddenField2.value = user_id;
form.appendChild(hiddenField2);

var hiddenField3 = document.createElement("input");
hiddenField3.type = "hidden";
hiddenField3.name = "operation";
hiddenField3.value = operation;
form.appendChild(hiddenField3);

form.submit();
}
</script>
</head>
<body>
<header>
    <div id="title">eTeam Bank</div>
</header>

<div id="container">
    <div class="userTitle" >
        <div class="user">
            Welcome: user
        </div>
        <div class="userTime">
        Thu Jan 31 09:24:16 EST 2013
        </div>
    </div>
    <div class="accountBox" >
        <div class="accountSpace"></div>
        <div id="accountAnchor">
        <a href="javascript:anchorRedirect('user', '2', 'loadPersonalInfo');">Personal Info</a> 
        </div>
        <div id="accountAnchor"> 
        <a href="javascript: anchorRedirect('user', '2', 'loadAccountInfo')">Account Info</a> 
        </div>
        <div id="accountAnchor"> 
        <a href="javascript: anchorRedirect('user', '2', 'loadAccountSum')">Account Summary</a> 

        </div>
    </div>
</div>

<footer>
    <div id="footerContent">Abraham Cabrera &copy; 2013</div>
</footer>

我的帐户
函数anchorRedirect(用户名、用户id、操作){
“严格使用”;
var form=document.createElement(“表单”);
form.name=“form”;
form.id=“form”;
form.method=“post”;
form.action=“ServletController”;
var hiddenField1=document.createElement(“输入”);
hiddenField1.type=“隐藏”;
hiddenField1.name=“用户名”;
hiddenField1.value=用户名;
表.附录子项(hiddenField1);
var hiddenField2=document.createElement(“输入”);
hiddenField2.type=“隐藏”;
hiddenField2.name=“用户id”;
hiddenField2.value=用户id;
表格.附件(hiddenField2);
var hiddenField3=document.createElement(“输入”);
hiddenField3.type=“隐藏”;
hiddenField3.name=“操作”;
hiddenField3.value=操作;
表格.附件(hiddenField3);
表单提交();
}
伊泰姆银行
欢迎:用户
2013年1月31日星期四09:24:16美国东部时间
亚伯拉罕·卡布雷拉&复印件;2013

其他详细信息:
1.这不适用于任何类型的生产企业或公司,仅用于个人学习。

2.我确实尝试过在不使用java脚本函数的情况下通过url路径直接传递变量,但这不符合我的要求,因为我需要向我的ServletController发出新请求,以便通过模型类或任何操作获取用户帐户信息,并将其转发回视图

我建议在HTML中创建表单(而不是通过javascript),表单中已经包含了所有需要的字段。然后,不用创建和设置元素,只需设置隐藏字段的值并提交表单,就可以从根本上简化JS。差不多

<form name="myform" id="myform" method="post" action="ServletController">
    <input type="hidden" name="username" value="">
    <input type="hidden" name="user_id" value="">
    <input type="hidden" name="operation" value="">
</form>

我注意到,如果我使用您的代码并添加一个id='form_div1'的div,并在提交之前将新创建的表单附加到该div中,它将从FireFox和IE开始工作

var my_div = document.getElementById("form_div1");
my_div.appendChild(form);
form.submit();

如果你能更具体地说明什么是不起作用的,这会有所帮助。您可以发布一个重现您的问题的JSFIDLE吗?你犯了什么错误?你是在HTML页面的
元素之前定义函数的吗?编辑它以包含我的错误和完整代码。相关:至于具体的功能要求,这段代码太糟糕了。像so
href=“servlet?foo=bar”
这样的普通链接,而不需要所有JS乱七八糟的东西,有什么错呢?如果你读了我的问题,也许第二次你会看到,我确实使用了setAttribute函数,但它没有解决我的问题。那么,为什么IE不能正确处理动态表单,因为你的解决方案起作用了,但你看不出为什么我的解决方案不应该这样做?嗯。。。正如查理指出的,贝娄。。。您正在创建的表单似乎没有正确地添加到DOM中(它是文档的一部分,但不在树中)。所以很可能。。。我拒绝提交。
var my_div = document.getElementById("form_div1");
my_div.appendChild(form);
form.submit();