javascript - 为什么数组没有显示在文本区域中?

标签 javascript arrays html dom

我基本上想做的是拆分用户给定的字符串,并将其放在文本区域中。然而,问题是,每次我单击转换按钮时,输入字段和文本区域都会被清除。 不要介意额外的声明。

这是html代码

<html>

<head>
    <title>Latin Converter</title>
    <meta charset="utf-8" />
    <script src="p14.js"></script>
    <link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
    <form>
        <div>
            <table>
                <tr>
                    <td>Enter a sentence:</td>
                    <td>
                        <input type="text" size="40" id="userinput" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <button id="convert">Convert to Pig Latin</button>
                    </td>
                </tr>
                <tr>
                    <td>Converter</td>
                    <td>
                        <textarea id="result" cols="40" rows="20"></textarea>
                    </td>
                </tr>
            </table>
        </div>
    </form>
</body>

</html>

这是我的js代码:

window.onload = function () {
    var convertArray = document.getElementById("convert");
    convertArray.addEventListener('click', printLatinWord);
};

function printLatinWord() {
        var input = document.getElementById("userinput").value;
        var array = input.split(" ");
        var firstChar = array.shift();
        array.push(firstChar);
        document.getElementById("result").value = array;
}

谢谢。

最佳答案

你有一个表单和里面的按钮,表单里面的按钮默认被认为是提交按钮,所以当你点击提交的表单并且页面刷新时,字段被清除。

我建议将 type='button' 添加到 button 中,如下所示:

<button type='button' id="convert">

window.onload = function () {
    var convertArray = document.getElementById("convert");
    convertArray.addEventListener('click', printLatinWord);
};

function printLatinWord() {
        var input = document.getElementById("userinput").value;
        var array = input.split(" ");
        var firstChar = array.shift();
        array.push(firstChar);
        document.getElementById("result").value = array;
}
<form>
        <div>
            <table>
                <tr>
                    <td>Enter a sentence:</td>
                    <td>
                        <input type="text" size="40" id="userinput" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <button type='button' id="convert">Convert to Pig Latin</button>
                    </td>
                </tr>
                <tr>
                    <td>Converter</td>
                    <td>
                        <textarea id="result" cols="40" rows="20"></textarea>
                    </td>
                </tr>
            </table>
        </div>
    </form>

希望这对您有所帮助。

关于javascript - 为什么数组没有显示在文本区域中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33222406/

相关文章:

javascript - 从 Controller 发送的字符串在处理为 HTML 时被分离

javascript - Array.map 使用箭头函数在 redux reducer 中返回 null

java - 如何将二进制转换为十进制 我有 2 的 10 次方的代码 我需要 2 的 32 次方的帮助

html - 占据页面剩余高度的可滚动 div

javascript - VueJS 将相同的变量绑定(bind)到多个相同的组件

javascript - 有没有更好的方法来处理默认 true ?

javascript - 如何在 JavaScript 中将 backgroundColor 分配给 var

javascript - 条件三元运算符给出错误 : Expected an assignment or function call and instead saw an expression when setting a variable

arrays - 使用 Thymeleaf 将数组转换为字符串的 null 安全方法是什么

html - 无论父级的纵横比如何,都保持 div 纵横比并居中