47

我正在尝试调用该resetyear函数,它也被调用,但流程停止在alert("over"). 它不会将控制权转移到resetmaster.

    String flag = "";
    flag = (String) session.getAttribute("flag");
    System.out.println("flag = " + flag);
    if (flag == null) {
        flag = "";
    }
    if (flag.equals("yes")) {
%>   
<script>
   
   alert(1);
  // resetyear();
    dontreset();
    //document.getElementById("checkyear").value = "1";
    //alert(document.getElementById("checkyear").value);
    
</script>
<%} else if(flag.equals("no"))
    {%>
<script>
    alert(2);
    //document.getElementById("checkyear").value = "2";
    //alert(document.getElementById("checkyear").value);
    resetyear();
</script>
<%}else{}%>


function resetyear(){

if(confirm("DO YOU WANT TO RESET THE YEAR?"))
{
    alert("hello");
    //document.forms['indexform'].action = "resetmaster";
    //alert(document.forms['indexform'].action);
    //document.forms['indexform'].submit();  
    alert("over");
    form.action = "resetmaster";
    form.submit();
    alert(1);
}
4

5 回答 5

79

对我来说它有效:

document.getElementById("checkyear").value = "1";
alert(document.getElementById("checkyear").value);

http://jsfiddle.net/zKNqg/

也许你的 JS 没有执行,你需要在它周围添加一个 function() {}。

于 2013-10-07T19:25:49.290 回答
6

它似乎在谷歌浏览器中运行良好。您使用的是哪个浏览器?这里的证明http://jsfiddle.net/CN8XL/

无论如何,您也可以通过document.FormName.checkyear.value. 您必须将输入包装在<form>带有适当属性的标签中name,如下所示:

<form name="FormName">
    <input type="hidden" name="checkyear" id="checkyear" value="">
</form>

您是否考虑过使用jQuery库?这是function的文档.val()

于 2013-10-07T19:44:41.660 回答
6

您需要在元素存在后运行脚本。将<input type="hidden" name="checkyear" id="checkyear" value="">移到开头。

于 2013-10-07T19:29:28.693 回答
1

我将尝试的第一件事 - 确定您的带有警报的代码是否实际呈现。我在您发布的内容中看到了一些服务器“如果”代码,因此可能是不满足呈现 javascript 的条件。因此,在您正在处理的页面上,右键单击 -> 查看源代码。尝试在那里找到js代码。如果您在页面上找到代码,请告诉我们。

于 2013-10-07T19:26:20.170 回答
1

您设置隐藏输入值的代码是正确的。这是示例。也许您的if语句中有一些条件不允许您的脚本执行。

于 2013-10-07T19:26:52.490 回答