gpt4 book ai didi

javascript - 简化 CasperJS 中多个子元素的映射,仅使用一个函数

转载 作者:行者123 更新时间:2023-12-03 10:56:22 26 4
gpt4 key购买 nike

我有这段代码,它可以工作,但想简化它。特别是,我相信有一种引用子元素的简写方法,这样我就不需要编写多个函数。如果有简化此代码的简写方法,请告诉我!

当前代码是

function getLineNumbers() {
var lineNumber = document.querySelectorAll('#InvoiceDetailGrid tbody tr td:nth-child(1)');
return Array.prototype.map.call(lineNumber, function(elem) {
return elem.textContent;
}); }

function getSKUs() {
var SKU = document.querySelectorAll('#InvoiceDetailGrid tbody tr td:nth-child(2)');
return Array.prototype.map.call(SKU, function(elem) {
return elem.textContent;
}); }

function getDescriptions() {
var description = document.querySelectorAll('#InvoiceDetailGrid tbody tr td:nth-child(3)');
return Array.prototype.map.call(description, function(elem) {
return elem.textContent;
}); }

function getPrices() {
var price = document.querySelectorAll('#InvoiceDetailGrid tbody tr td:nth-child(4)');
return Array.prototype.map.call(price, function(elem) {
return elem.textContent;
}); }

function getQuantities() {
var quantity = document.querySelectorAll('#InvoiceDetailGrid tbody tr td:nth-child(5)');
return Array.prototype.map.call(quantity, function(elem) {
return elem.textContent;
}); }

function getTotals() {
var total = document.querySelectorAll('#InvoiceDetailGrid tbody tr td:nth-child(6)');
return Array.prototype.map.call(total, function(elem) {
return elem.textContent;
}); }

然后我在稍后的函数中使用以下代码进行调用:

lineNumber = lineNumber.concat(this.evaluate(getLineNumbers));
SKU = SKU.concat(this.evaluate(getSKUs));
description = description.concat(this.evaluate(getDescriptions));
price = price.concat(this.evaluate(getPrices));
quantity = quantity.concat(this.evaluate(getQuantities));
total = total.concat(this.evaluate(getTotals));

有什么方法可以简化此代码,以便我只需要一个函数(例如 getInvoiceData)来将子元素适当链接到正确的数组?

最佳答案

您已经使用函数(CSS 选择器 :nth-child())来选择特定的子元素。您只能使用一个函数,并通过单独的参数将预期的子索引传递到页面上下文中:

function getText(i) {
var elements = document.querySelectorAll('#InvoiceDetailGrid tbody tr td:nth-child('+i+')');
return Array.prototype.map.call(elements, function(elem) {
return elem.textContent;
});
}
lineNumber = lineNumber.concat(this.evaluate(getText, 1));
SKU = SKU.concat(this.evaluate(getText, 2));
...

关于javascript - 简化 CasperJS 中多个子元素的映射,仅使用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28255703/

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