javascript - 为什么 IE 和 Firefox 之间的 .html() 值存在差异(添加问题详细信息)

标签 javascript jquery html

我有这个表,我可以通过 jquery 的 .append() 生成动态行(其中输入 <type="text" /> 作为内容),并将生成的 html 存储到 <input type="hidden" /> 中。通过 jquery 的 .html() 获取 html 并使用 .val() 将值添加到隐藏。

在 Internet Explorer 中,如果我在文本框中输入值,这些值也会包含在隐藏字段中,但在 Firefox 中,除了值之外的所有内容都存储在该字段中。

编辑:

所以,我的问题是:我应该使用什么方法来获取在 Firefox 中显示的值?

编辑:

以下是有关我的问题的更多详细信息:

该表的构造如下:

<table id="tblTest" class="testTable">
    <thead>
        <tr>
            <td>Product</td>
            <td>Quantity</td>
            <td>Remove TR</td>
        </tr>
    </thead>
    <tbody id="tblTestTR">
    </tbody>
    <tfoot>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tfoot>
</table>
<input type="button" id="btnTest" value="Add Table Row" />&nbsp;<input type="submit" id="btnSubmit" value="Submit Form" />
<input type="hidden" id="txtHTML" name="txtHTML" />

添加表格行的功能是:

function AddTR()
        {
            var txtBox = "<tr id='dynTR'><td><input type='text' class='textBoxes' value='' /></td><td><input type='text' class='textBoxes' value='0' /></td><td><input type='button' value='remove' /></td></tr>";
            x++;
            var oRow = $(txtBox);
            $(this).append(oRow);

            oRow.find("input[type=\"button\"]").click(function ()
            {
                $(this).closest("tr").remove();
            });
        }

并获取 <tbody> 的 HTML是:

function GetInnerHTML(node)
        {
            alert(node.html());
            $("#txtHTML").val(node.html());
        }

最佳答案

读取输入元素值的正确方法是读取它们的实际值,而不是读取呈现它们的标记。您不能假设浏览器会更改标记来存储输入元素的值。

事实上 IE 似乎正在这样做,这真的很糟糕。请始终记住,IE 因违反标准而臭名昭著(即使是 IE9)。

IE 通过操作原始标记来存储状态的类似情况:读取相对链接的 href 属性将为您提供已解析的绝对 URL。只是为了让您了解这些怪癖有多么丰富......

不要将你的算法基于浏览器的怪癖,而是寻找正确的方法。尝试val() jQuery 提供的方法。

关于javascript - 为什么 IE 和 Firefox 之间的 .html() 值存在差异(添加问题详细信息),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6067203/

相关文章:

java - selenium WebDriver 中的鼠标悬停操作

JavaScript 删除 Div 元素上的重复标签

jquery - 在网站上使用嵌入式播放器流式传输 m3u

javascript - 未选中 ng-repeat 列表中的复选框时禁用按钮

html - YouTube 在哪里存储播放器速度首选项?

javascript - 我想更改传单中一层的图标颜色,我有两个点,图层都显示为蓝色默认图标

javascript - 我正在尝试删除 discord.js 中的消息

javascript - 使用下一个和预览按钮隐藏许多按钮

jquery - 使用 jQuery 定位列表中的每个第三个和第一个元素

html - 如何更改 Materialise 中空(未选中)复选框的边框颜色