0

我有一个奇怪的问题。我有按钮“NextButton”,我最初想隐藏它,但是当单击复选框时,它应该会出现。下面的代码不起作用,也没有给出任何错误。我已经在 IE9 和 FireFox 13 上对其进行了测试,我搜索了其他问题,但找不到我遇到的问题......

<html>
<head>
<script language="javascript">
        function enableNext() {
            alert("clicked");

            var s1 = document.getElementsByName("NextButton");
            s1.style.visibility = "visible";
        } 
    </script>
</head>

<body>
<input type="submit" name="NextButton" value="Next" style="visibility:hidden;"/>
<input type="checkbox" onClick="enableNext()" />
</body>

</html>
4

4 回答 4

3

在您的代码中返回一个数组,并且您正在将样式应用于数组。将其更改为下面的代码。

 function enableNext() {
            alert("clicked");

            var s1 = document.getElementsByName("NextButton")[0];//Get the first and only button in your case
            s1.style.visibility = "visible";
        } 
于 2012-07-12T07:05:34.833 回答
1

您应该id在 HTML 元素中使用,然后document.getElementById(). 这将给出完全匹配的元素。

<script language="javascript">
        function enableNext() {
            alert("clicked");

            var s1 = document.getElementById("NextButton");
            s1.style.visibility = "visible";
        } 
</script>

<input type="submit" id="NextButton" name="NextButton" value="Next" style="visibility:hidden;"/>

于 2012-07-12T07:11:01.693 回答
1

document.getElementsByName 返回一个匹配元素的数组,您必须遍历它并更改数组中各个项目的样式。您可以使用 jQuery 轻松处理它,$("[name='NextButton']").css("visibility", "visible")或者如果您想使用 cssdisplay属性,您可以使用$("[name='NextButton']").show().hide(). 此外,如果您不想使用 jQuery,您可以只使用 id 而不是使用getElementsByNameuse getElementById,它将返回您需要的单个元素。

于 2012-07-12T07:05:23.580 回答
0

我想你应该尝试单独使用 css 而不是 javascript。

尝试使用

document.getElementsByName("NextButton")[0];
于 2012-07-12T07:05:55.757 回答