0

I have looked at many other topics on here that are similar to my problem but none of the answers work for me. I am trying to call a javascript function when a button is clicked but it does nothing. I hvae tried changing the call to onclick="javascript:ClearFields();" and onclick="ClearFields()" and it doesn't work either. I have to use a button (not submit) calling javascript My jsp code is:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Calculator</title>
    </head>
    <body>
        <!-- if the user is logged in then we need to render one version of the page
        consequently if the user is logged out we need to render a
        different version of the page -->

        <script type="text/javascript">
            function ClearFields() {
                document.getElementById("num1").value = "";
                document.getElementById("num2").value = "";
                document.getElementById("operator").value = "+";
        }
        </script>

        <c:choose>
            <c:when test="${empty user}">
                <p>
                    ${msg} <br/>
                    Would you like to log in? <br/>
                    <a href="${login_url}">Sign in or register</a> <br/>
                </p>
            </c:when>
            <c:otherwise>
                <p>
                    Welcome ${user.email} 
                <p/>
                <p><h1>Calculator</h1></p>
                <!-- form of basic input types -->
                <form action="/" method="post">
                    <table border="0">
                        <tr><td>
                            Number 1: <input type="text" name="num1" value="${ans}"/><br/>
                        </td><td>
                            Number 2: <input type="text" name="num2" /><br/>
                        </td></tr>
                        <tr><td colspan=2 align=center>
                            <select name="operator">
                                <option value="+"> + </option>
                                <option value="-"> - </option>
                                <option value="*"> * </option>
                                <option value="/"> / </option>
                            </select>
                        </td></tr>
                        <tr><td align=center>
                            <!-- Button to submit the form to the servlet when clicked -->
                            <input type="submit" value="Calculate"/><br/>
                        </td>
                        <td align=center>
                            <input type="button" onclick="ClearFields();" value="Clear"/><br/>
                            <!-- <input type="button" onclick="ClearFields();" value="Clear"/><br/> -->
                        </td></tr>
                        <tr><td colspan=2>
                            <h1> ${msg}</h1>
                        </td></tr>
                    </table>
                </form>
                <p>
                    You can signout <a href="${logout_url}">here</a>
                </p>
            </c:otherwise>
        </c:choose>
    </body>
</html>

The generated html is

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Calculator</title>
    </head>
    <body>
        <!-- if the user is logged in then we need to render one version of the page
        consequently if the user is logged out we need to render a
        different version of the page -->

        <script type="text/javascript">
        function ClearFields() {
            document.getElementById("num1").value = "";
            document.getElementById("num2").value = "";
            document.getElementById("operator").value = "+";
        }
        </script>




                <p>
                    Welcome [email protected] 
                <p/>
                <p><h1>Calculator</h1></p>
                <!-- form of basic input types -->
                <form action="/" method="post">
                    <table border="0">
                        <tr><td>
                            Number 1: <input type="text" name="num1" value=""/><br/>
                        </td><td>
                            Number 2: <input type="text" name="num2" /><br/>
                        </td></tr>
                        <tr><td colspan=2 align=center>
                            <select name="operator">
                                <option value="+"> + </option>
                                <option value="-"> - </option>
                                <option value="*"> * </option>
                                <option value="/"> / </option>
                            </select>
                        </td></tr>
                        <tr><td align=center>
                            <!-- Button to submit the form to the servlet when clicked -->
                            <input type="submit" value="Calculate"/><br/>
                        </td>
                        <td align=center>
                            <input type="button" onclick="ClearFields();" value="Clear"/><br/>
                        </td></tr>
                        <tr><td colspan=2>
                            <h1> Welcome to the Calculator</h1>
                            </td></tr>
                        </table>
                </form>
                <p>
                    You can signout <a href="/_ah/logout?continue=%2F">here</a>
                </p>


    </body>
</html>

Any ideas where I am going wrong? Could it just be that the page is no resubmitting? It seems to be.

1 Answer 1

1

Your JavaScript:

document.getElementById("num1").value = "";

Your HTML:

<input type="text" name="num1" value=""/>

getElementById gets an element by its id, and your element doesn't have any id. You need to add an id attribute.

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you so much. It's always the simple things. That was driving me crazy.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.