通过.html()jquery方法插入时,文本会被加扰

时间:2012-10-04 17:03:58

标签: javascript jquery scramble

在网页中我正在做的是一个表格,通过点击每一行你可以修改它。这是通过用包含相对值的输入字段替换每个单元格的内容来完成的。为了让用户取消所做的更改,我在进行替换之前保存整个表行的内容,然后我将其用于组合新的html字符串以放入表行(基本上,我只是把它放在一个函数中当按下按钮以恢复更改时调用然后调用。如果我尝试通过警报显示它,字符串看起来很好。然而,firebug返回一个错误,因为显然字符串在我通过调用.html将它放入页面后被扰乱了。 我的意思是,而不是

<tr><td>somedata</td><td><input type=button onclick=fun('oldTrContent')/></td></tr>

它的

<tr><td>somedata</td><td><input type=button oldTrContentNotInOrder') onclick=fun(/></td></tr>
显然无法正常工作。我尝试在函数中添加一些警报,以查看此行为是否是由某些格式错误引起的,但是在调用.html()时,一切看起来都很好。 我使用的代码是:

function mostraModificaCompet(ids, nome){
var id='#'+nome;
var statoPrec=escape($(id).html());
alert(statoPrec);
var d=$(id+" .data").html();
var c=$(id+" .caus span").html();
var de=$(id+" .descr").html();
var pu=$(id+" .prezzou").html();
var q=$(id+" .qta").html();
var pt=$(id+" .prezzot").html();
var iu=$(id+" .ivau").html();
var it=$(id+" .ivat").html();
var t=$(id+" .tot").html();
var r=$(id+" .res").html();
var pr=$(id+" .progr").html();
var str="<td class=data ><input type=text value="+d+" /></td><td class=caus ><select class=selcaus ></select></td><td class=descr ><input type=text value="+de+" />\
</td><td class=prezzou ><input type=text value="+pu+" /></td><td class=qta ><input type=text value="+q+" /></td><td class=prezzot ><input type=text value="+pt+" disabled /></td>\
<td class=ivau ><input type=text value="+iu+" /></td><td class=ivat ><input type=text value="+it+" disabled /></td><td class=tot ><input type=text value="+t+" disabled /></td><td>\
<input type=button value='Conferma' onclick=modificaCompet("+ids+", '"+nome+"') /></td><td><input type=button value=Annulla onclick=ripristinaCompet('"+nome+"', '"+statoPrec+"') /></td>";
alert(str);
$(id).html(str);
}

我保存旧内容的变量是statoPrec,然后我在编写str时使用它(它位于字符串的末尾)。 提前感谢任何回答的人。

2 个答案:

答案 0 :(得分:0)

问题似乎是,当最初从td单元格中的值开始时,可​​以通过innerHTML访问这些值。但是,一旦它们变成输入,它们就是输入的值,而不是输入的innerHTML。您可能必须创建两个函数,其中一个使用元素的.html(),另一个函数查找元素的.val()。

答案 1 :(得分:0)

您尝试将该值设置为无效的html,onclick=modificaCompet("+ids+", '"+nome+"')需要一些引号,因此它是onclick=\"onclick=modificaCompet("+ids+", '"+nome+"')\"。以及您未能引用的任何其他属性。

相关问题