Trong nhiều trường hợp các bạn muốn sử dụng node eval để xử lý 1 đoạn javascript code mà muốn tự động trả về nhiều biến khác nhau tương ứng với các kết quả đó, mà không biết làm như thế nào thì hôm nay sẽ được hướng dẫn chi tiết cụ thể về vấn đề này nhé.
Bây giờ đi vào một ví dụ cụ thể : Tôi muốn get text từ tất cả element sau đây và xử lý bước này trong node eval chứ không cần chạy vòng lặp để get text :
Thì trong node EVAL mình xử lý như sau :
- Nội dung bạn đưa vào node EVAL như sau :
const elements = document.querySelectorAll(‘div > div > span > a > h3’)
const results = {}
for (let i = 0; i < elements.length; i++) {
results[(‘output_’+i)] = elements[i].textContent.trim()
}
return results
Mình xin giải thích một số dữ liệu như sau :
+) div > div > span > a > h3 : phần này b sẽ nhập vào selector mà bạn muốn dùng. Nếu b dùng xpath thì b sửa document.querySelectorAll(‘div > div > span > a > h3’) thành :
const elements = document.evaluate(“//div/div/span/a/h3”, document, null, XPathResult.ANY_TYPE, null);
const results = {};
let element;
let i = 0;while (element = elements.iterateNext()) {
results[‘output_’ + i] = element.textContent;
i++;
}return results;
+) output_ : đây là biến sẽ get ra các kết quả lần lượt. Nếu bạn để như vậy thì lần lượt các biến có được là output_0, output_1, output_2,… đến hết “i” thì thôi. Nếu bạn muốn sử dụng biến này cho các node sau thì nên đặt tên biến ở node VARIABLE trước,
Ví dụ như mình ở đây đã đặt sẵn biến output từ 0 đến output_7
=> Tương tự như vậy, b khai báo tên biến như nào thì thay thế vào vị trí của từ ” output” kia là được là được nhé.
+) Cuối cùng là phần ” Variables mapping type” bạn chọn ” Auto” là xong rồi.
Trên đây là cách mình hay dùng và hướng dẫn tất cả mọi người, nếu ai có ý tưởng gì mới hay bất kì thắc mắc nào xin liên hệ với Hidemium nhé. Cảm ơn các bạn đã ủng hộ và theo dõi.