如何通过JavaScript设置隐藏输入字段的值?

53
我正试图调用 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);
}

尝试将您的HTML代码放在尝试操作它的脚本之前。"<%} else if (flag != "") {%>"是用来做什么的? - underscorePez
@underscorePez 谢谢伙计。我改变了整个代码。不再使用隐藏标签,而是直接从 if 条件调用函数。我又修改了问题。请检查并建议答案。 - Divyang
1
这些编辑是否使问题与标题和答案完全脱节了? - Teepeemm
5个回答

94

对我来说它有效:

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

http://jsfiddle.net/zKNqg/

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


但是我将不得不调用那个函数,而我并不想要。我希望它根据条件进行设置。 - Divyang
如果你只写了 function() {}(没有给函数命名),那么这个函数就会被称为 onload。 - almo
至少当我使用jQuery时,它的工作原理是这样的:$(function() {}); - almo
谢谢伙计。我改了整个代码。我没有使用隐藏标签,而是直接从if条件中调用了函数。我又修改了问题。请检查并建议我答案。 - Divyang

9

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


谢谢伙计。我改了整个代码。我没有使用隐藏标签,而是直接从if条件中调用了函数。我又修改了问题。请检查并建议我答案。 - Divyang

7

在谷歌浏览器中似乎可以正常工作。你使用的是哪个浏览器? 这里有证明 http://jsfiddle.net/CN8XL/

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

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

您考虑过使用 jQuery 库吗?这里是.val() 函数的文档


谢谢老兄。我改了整个代码。我直接从if条件语句中调用了函数,而不是使用隐藏标签。我又修改了问题,请您检查并建议我答案。 - Divyang
1
.val() 无法作用于隐藏元素。请参见 https://dev59.com/tXA85IYBdhLWcg3wBOxO - zamber
1
你确定吗,Zamber?我不这么认为。https://jsfiddle.net/rcegvttm/(我使用了jQuery 1.12,也可以尝试使用2.x或3.x,无论哪个版本都可以工作)另一篇文章:https://dev59.com/_G855IYBdhLWcg3wYTL_ - andreacanton

1
我将尝试的第一件事是确定您带有警报的代码是否实际呈现。 我在您发布的内容中看到了一些服务器端的“if”代码,因此可能无法满足渲染JavaScript的条件。 所以,在您正在工作的页面上,右键单击->查看源代码。 尝试在那里找到js代码。 请告诉我们是否在页面上找到了该代码。

谢谢伙计。我改了整个代码。我没有使用隐藏标签,而是直接从if条件中调用了函数。我又修改了问题。请检查并建议我答案。 - Divyang

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

谢谢伙计。我改了整个代码。我没有使用隐藏标签,而是直接从if条件中调用了函数。我又修改了问题。请检查并建议我答案。 - Divyang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接