mergecommonrows-6ren">
gpt4 book ai didi

javascript - jQuery .text() 方法重复自身。如何让它只运行一次?

转载 作者:行者123 更新时间:2023-11-30 20:40:03 25 4
gpt4 key购买 nike

<tr class="<%= payment_paid(f.paid)%>" id="paidrow">
<td>
<% if !f.paid %>
<%= check_box_tag "pin_number[]", f.id, checked= !f.paid? %>
<%end%>
</td>

<td class="pin"><%= f.year %></td>
<td class="val"><%= f.quarter %></td>
<td align="right" class="price"><%= number_to_currency(f.amount, unit: "", precision: 2)%></td>


<script>
mergecommonrows();
setTimeout(addpaidrows,1000);
</script>
</tr>

function addpaidrows(){
$(document).ready(function(){
var table = $("#property_dtl_table_body");
var rows = table.find("tr#paidrow.payment_paid");
var first = parseFloat(rows.find('.price').text());
sum = first;
var startIndex = 0;
var lastIndex = 0;
var startText = rows.find('.price').text();

var colsLength = 4;
var removeLater = new Array();

for(var i=3; i<colsLength; i++){
for(var j=1; j<rows.length; j++){
var cRow =$(rows[j]);
var cCol = $(cRow.find('.price'));
var currentText = cCol.text();
var currentNumber = parseFloat(cRow.find('.price').text());
cCol.css("background","#c8fcc1");
console.log(cCol);
removeLater.push(cCol);
lastIndex=j;
var spanLength = lastIndex-startIndex;
if(spanLength>=1){
console.log(lastIndex+" - "+startIndex)
//console.log($($(rows[startIndex]).find('.price')))
$($(rows[startIndex]).find('.price')[i]).attr("rowspan",spanLength+1);
}
lastIndex = j;
startIndex = j;
startText = currentText;

var spanLength = lastIndex-startIndex;
if(spanLength>=1){
console.log(lastIndex+" - "+startIndex)
//console.log($($(rows[startIndex]).find("td")[i]))
$($(rows[startIndex]).find('.price')[i]).attr("rowspan",spanLength+1);
}
console.log("---");
sum = sum + currentNumber;

}
}


console.log(sum);
var frist = rows.find('.price').text();




for(var i in removeLater){
$(removeLater[i]).remove();
}

$('tr#paidrow.payment_paid td.price').text(sum.toFixed(2))
});
}

我正在编写一个程序,在 Javascript 文件完成它的工作后,表格右上角的文本将替换为“sum.toFixed(2)”变量(在本例中为 67.97) .它有效,但问题是 .text() 方法会重复自身,导致结果变为 NaN,因为制作 sum.toFixed(2) 所需的其他数字在添加到总和后被删除。根据下面的控制台,这似乎是问题的原因。

enter image description here

enter image description here

最佳答案

不幸的是,与其他 jQuery 方法相比,text 有点不寻常。来自 the documentation :

Get the combined text contents of each element in the set of matched elements, including their descendants, or set the text contents of the matched elements.

几乎 jQuery 中的所有其他访问器函数都只访问匹配元素的第一个,但是 text 组合了它们的所有文本。

如果您只想要第一个 匹配项目的文本,您必须故意这样做:

var first = parseFloat(rows.find('.price').first().text());
// ---------------------------------------^^^^^^^^

关于javascript - jQuery .text() 方法重复自身。如何让它只运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49379948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com