Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么IE和Firefox之间的.html()值存在差异(添加了问题详细信息)_Javascript_Jquery_Html - Fatal编程技术网

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

Javascript 为什么IE和Firefox之间的.html()值存在差异(添加了问题详细信息),javascript,jquery,html,Javascript,Jquery,Html,在这个表中,我可以生成动态行,这些行通过jquery的.append作为内容输入,我通过jquery的.html获取html并将值添加到隐藏的with.val中,从而将生成的html存储到 在Internet Explorer中,如果我在文本框中输入值,这些值也会包含在隐藏字段中,但在Firefox中,除值之外的所有内容都存储在该字段中 编辑: 所以,我的问题是:即使在Firefox中,我也应该使用什么方法来获取要显示的值 编辑: 以下是关于我的问题的更多细节: 该表的结构如下: <tab

在这个表中,我可以生成动态行,这些行通过jquery的.append作为内容输入,我通过jquery的.html获取html并将值添加到隐藏的with.val中,从而将生成的html存储到

在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" />

firebug并不总是更新jquery所做的更改。 如果您使用console.log记录这些值,您将看到它就在那里


顺便问一下-你熟悉jqgrid吗?

我说不出你在做什么。从你的代码中确实不清楚,试试这个

<table>
<tbody>
</tbody>
</table>
<form>
<input type="text" name="textI" />
<input type="submit" />
</form>

$("form").submit(function( ev ){
  var val = $( this ).find("[name=textI]").val(); 
  $('tbody').append('<tr><td>' + val + '<button>Remove</button></td></tr>');

});

$('table').delegate('button','click',function(){
  $( this ).parent().remove(); //parent targets td, perhaps need to use parent().parent()
});

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

IE这样做的事实真的很糟糕。永远记住,IE是臭名昭著的,即使IE9违反了标准

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


不要把你的算法建立在浏览器怪癖的基础上,而要找到正确的方法。尝试jQuery提供的方法。

您不应该使用val而不是html吗?您能提供一个例子吗?@tfbox-抱歉,在问题中添加了这个细节。我确实注意到它读起来像是通过使用.html而不是.val向隐藏添加值;我见过,但还没用过。我认为jqgrid对于我想要实现的目标来说可能太大了。对我的评论有什么想法吗?事实上,我并没有试图读取输入字段的值。我真的只需要为用户保存带有值的html。最接近的与使用parent或parent.parent相同,因为我只需要从表中删除。我不是在问如何删除最接近的“是”将查找第一次命中的祖先。这个的性能没有透露,但是你可以安全地使用它,而不是直接查找家长。我明白了。。。谢谢你的提示。如果我的最后一句话听起来令人讨厌或是什么的话,我很抱歉
function GetInnerHTML(node)
        {
            alert(node.html());
            $("#txtHTML").val(node.html());
        }
<table>
<tbody>
</tbody>
</table>
<form>
<input type="text" name="textI" />
<input type="submit" />
</form>

$("form").submit(function( ev ){
  var val = $( this ).find("[name=textI]").val(); 
  $('tbody').append('<tr><td>' + val + '<button>Remove</button></td></tr>');

});

$('table').delegate('button','click',function(){
  $( this ).parent().remove(); //parent targets td, perhaps need to use parent().parent()
});