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