Hướng dẫn how do you iterate over a table in javascript? - làm thế nào để bạn lặp qua một bảng trong javascript?

Giải pháp tốt hơn: Sử dụng

const url_table = document.getElementById("sitemap").rows

var post_urls = [];

for (let i = 0; i < url_table.length; i++) {
    post_urls.push(url_table[i].cells[0].innerText);
}
4 gốc của JavaScript và để chuyển đổi đối tượng HTMLCollection thành một mảng, sau đó bạn có thể sử dụng các hàm mảng tiêu chuẩn.

var t = document.getElementById('mytab1');
if(t) {
    Array.from(t.rows).forEach((tr, row_ind) => {
        Array.from(tr.cells).forEach((cell, col_ind) => {
            console.log('Value at row/col [' + row_ind + ',' + col_ind + '] = ' + cell.textContent);
        });
    });
}

Bạn cũng có thể tham khảo

const url_table = document.getElementById("sitemap").rows

var post_urls = [];

for (let i = 0; i < url_table.length; i++) {
    post_urls.push(url_table[i].cells[0].innerText);
}
5 và
const url_table = document.getElementById("sitemap").rows

var post_urls = [];

for (let i = 0; i < url_table.length; i++) {
    post_urls.push(url_table[i].cells[0].innerText);
}
6 thay vì sử dụng
const url_table = document.getElementById("sitemap").rows

var post_urls = [];

for (let i = 0; i < url_table.length; i++) {
    post_urls.push(url_table[i].cells[0].innerText);
}
7 và
const url_table = document.getElementById("sitemap").rows

var post_urls = [];

for (let i = 0; i < url_table.length; i++) {
    post_urls.push(url_table[i].cells[0].innerText);
}
8.

Tôi rất thích cách tiếp cận này trong 2 câu trả lời được gửi cao nhất hàng đầu vì nó không làm lộn xộn mã của bạn với các biến toàn cầu

const url_table = document.getElementById("sitemap").rows

var post_urls = [];

for (let i = 0; i < url_table.length; i++) {
    post_urls.push(url_table[i].cells[0].innerText);
}
9,
https:///sitemap.xml

OR

https:///sitemap_index.xml
0,
https:///sitemap.xml

OR

https:///sitemap_index.xml
1 và
https:///sitemap.xml

OR

https:///sitemap_index.xml
2 / cảnh báo trình biên dịch) ... không có các thư viện khác (ví dụ: jQuery). Hơn nữa, nó cho phép mã của bạn truy cập vào cả VAR
https:///sitemap.xml

OR

https:///sitemap_index.xml
3 và
https:///sitemap.xml

OR

https:///sitemap_index.xml
4 thay vì chỉ là phần tử và nếu bạn muốn ẩn chỉ mục, bạn có thể bỏ qua nó trong danh sách gọi lại.

Nếu bạn yêu cầu điều này để chạy trong một phiên bản cũ (Pre-ES2015) của JavaScript,

https:///sitemap.xml

OR

https:///sitemap_index.xml
5 có thể được đa dạng.

Hướng dẫn nhanh này dạy bạn cách lặp qua một bảng URL và đặt các URL vào một loạt các chuỗi bằng JavaScript.table of URLs and put the URLs into an array of strings using JavaScript.

Ở đây, một đoạn mã lặp qua một bảng URL trên bảng HTML của trang web trang web. Nó biến bảng URL thành một loạt các chuỗi của các URL:

const url_table = document.getElementById("sitemap").rows

var post_urls = [];

for (let i = 0; i < url_table.length; i++) {
    post_urls.push(url_table[i].cells[0].innerText);
}

Tiểu sử

Gần đây, tôi đã làm việc trên một dự án liên quan đến việc phân tích từng bài đăng trên trang web này. Để làm điều này, tôi cần phải có được một bộ sưu tập tất cả các URL trên trang web này.

Google xếp hạng các trang web với sự trợ giúp của trang web. Mỗi trang web có một.

Bạn thường có thể tìm thấy bất kỳ trang web trang web nào với cấu trúc URL sau:

https:///sitemap.xml

OR

https:///sitemap_index.xml

Trang web của tôi cho các bài đăng trên blog có thể được tìm thấy tại

https:///sitemap.xml

OR

https:///sitemap_index.xml
6.

Sơ đồ trang web của tôi không là gì ngoài một bảng HTML dài với các URL.

Hướng dẫn how do you iterate over a table in javascript? - làm thế nào để bạn lặp qua một bảng trong javascript?

Bây giờ, để lấy các URL từ bảng này và đặt chúng vào một mảng, tôi đã chạy đoạn mã này trong bảng điều khiển JS của trang web SiteMap.

const url_table = document.getElementById("sitemap").rows

var post_urls = [];

for (let i = 0; i < url_table.length; i++) {
    post_urls.push(url_table[i].cells[0].innerText);
}

https:///sitemap.xml

OR

https:///sitemap_index.xml
7 là thẻ neo (
https:///sitemap.xml

OR

https:///sitemap_index.xml
8) với URL. Để lấy chuỗi URL từ nó, chỉ cần gọi thuộc tính
https:///sitemap.xml

OR

https:///sitemap_index.xml
9.

Bây giờ tất cả các URL đều ở trong một mảng. Điều này làm cho nó có thể dễ dàng thực hiện một hành động cho mỗi URL có.

Sự kết luận

Tôi hy vọng hướng dẫn ngắn này giúp bạn tiết kiệm thời gian nếu bạn muốn lặp qua bảng URL HTML

Cảm ơn vì đã đọc. Tôi hy vọng bạn thấy nó hữu dụng.

Mã hóa hạnh phúc!

Đọc thêm

100 câu hỏi phỏng vấn JavaScript

50 từ thông dụng phát triển web

Chào mọi người,

Tôi hơi mắc kẹt khi cố gắng tạo nhiều bảng HTML (hoặc các hàng bảng có thể nhìn thấy có điều kiện) trong một cửa sổ bật lên dựa trên giá trị của các trường trong một mảng. Trong trường hợp này, nhiều thử nghiệm đang được thực hiện (tối đa năm) trên một mét, nhưng tôi chỉ muốn hiển thị các bảng kết quả cho các thử nghiệm thực sự được thực hiện để tôi không có các hàng bảng trống và/hoặc sử dụng nhiều bất động sản hơn cần thiết. Dữ liệu phẳng, do đó có các trường dự phòng (như bạn có thể thấy trong các biến toàn cầu) thay vì mối quan hệ một-nhiều. Có một trường boolean (add_test_#) được lật từ "không" đến "có" trước khi mỗi bài kiểm tra được thực hiện. Mỗi người có giá trị mặc định là "Không". Mã dưới đây hoạt động tuyệt vời cho thử nghiệm đầu tiên, nhưng không tạo ra bất kỳ bảng bổ sung nào trong cửa sổ bật lên để kiểm tra bổ sung. Tôi nhận ra mã có thể được tối ưu hóa, nhưng tôi không & nbsp; muốn dành quá nhiều thời gian hơn cho việc này cho đến khi tôi biết điều này có thể đạt được.

var myList = [$feature.ADD_TEST_1, $feature.ADD_TEST_2, $feature.ADD_TEST_3, $feature.ADD_TEST_4, $feature.ADD_TEST_5]
var field1 = [IIF(IsEmpty($feature.T1_VOL_MIN), "No Value", $feature.T1_VOL_MIN), IIF(IsEmpty($feature.T2_VOL_MIN), "No Value", $feature.T2_VOL_MIN), IIF(IsEmpty($feature.T3_VOL_MIN), "No Value", $feature.T3_VOL_MIN), IIF(IsEmpty($feature.T4_VOL_MIN), "No Value", $feature.T4_VOL_MIN), IIF(IsEmpty($feature.T5_VOL_MIN), "No Value", $feature.T5_VOL_MIN)] 
var field2 = [IIF(IsEmpty($feature.T1_TVOL_FLWD), "No Value", $feature.T1_TVOL_FLWD), IIF(IsEmpty($feature.T2_TVOL_FLWD), "No Value", $feature.T2_TVOL_FLWD), IIF(IsEmpty($feature.T3_TVOL_FLWD), "No Value", $feature.T3_TVOL_FLWD), IIF(IsEmpty($feature.T4_TVOL_FLWD), "No Value", $feature.T4_TVOL_FLWD), IIF(IsEmpty($feature.T5_TVOL_FLWD), "No Value", $feature.T5_TVOL_FLWD)]
var field3 = [IIF(IsEmpty($feature.T1_ACCURCY), "No Value", $feature.T1_ACCURCY), IIF(IsEmpty($feature.T2_ACCURCY), "No Value",$feature.T2_ACCURCY), IIF(IsEmpty($feature.T3_ACCURCY), "No Value", $feature.T3_ACCURCY), IIF(IsEmpty($feature.T4_ACCURCY), "No Value", $feature.T4_ACCURCY), IIF(IsEmpty($feature.T5_ACCURCY), "No Value", $feature.T5_ACCURCY)]

for (var v in myList){
    if(myList[v] == "Yes"){
        var testNum = (v + 1)
        var i = v
        var firstField = field1[i]
        var secondField = field2[i]
        var thirdField = field3[i]
        var myTable = { 
        	"type" : "text", 
        	"text" : `
            
Test ${testNum} Results
Volume Min ${firstField}
Total Volume Flowed ${secondField}
Accuracy (%) ${thirdField}
` } return myTable }else{ return "No results for Test " + (v + 1) } }

@Xanderbakker & nbsp; @paulbarker, có suy nghĩ nào về những gì có thể gây ra vấn đề không?

Cảm ơn trước!

Peter

  • giải trí
  • ArcGIS trực tuyến
  • HTML
  • văn bản phong phú
  • mẫu chữ

  • Tất cả những bài viết
  • Chủ đề trước
  • Chủ đề tiếp theo

1 giải pháp

Bạn trở lại bên trong vòng lặp, không phải bên ngoài.

Khi bạn trở về từ một chức năng, bạn ngừng thực hiện nó vào thời điểm đó. Mọi thứ sau khi nó sẽ không bị xua tan:

function test() {
    var x = 2
    return x // returns 2
    // everything after this will never get executed.
    // the new value of x will never be returned, x won't even get changed at all.
    x += 5
    return x
}

Vì vậy, khi bạn quay lại bên trong một vòng lặp, bạn chỉ trả lại phần tử đầu tiên:

var arr = [25, 30, 103]
for(var i in arr) {
    return arr[i] + 1  // this will just return 26 and then stop
}

Những gì bạn muốn làm là thế này:

  • Tạo một đối tượng trước vòng lặp sẽ giữ tất cả các kết quả trung gian. Trong hầu hết các trường hợp, đây sẽ là một mảng hoặc một chuỗi.
  • Bên trong vòng lặp, nối kết quả trung gian của bạn vào đối tượng đó.
  • Sau vòng lặp, trả về đối tượng đó.
var arr = [25, 30, 103]
var output_arr = []
for(var i in arr) {
    Push(output_arr, arr[i] + 1)  // append the intermediate result
}
return output_arr  // this will return [26, 31, 104]

Tất cả trong tất cả những gì bạn chỉ cần tái cấu trúc mã của bạn một chút:

var myList = ["Yes", "Yes", "No", "No", "Yes"]
var field1 = [1, 1, "N/A", "N/A", 1] 
var field2 = [1, 1, "N/A", "N/A", 1] 
var field3 = [1, 1, "N/A", "N/A", 1] 

var myHTML = ""  // this string will hold all the tables

for (var v in myList){
    if(myList[v] == "Yes"){
        var testNum = (v + 1)
        var i = v
        var firstField = field1[i]
        var secondField = field2[i]
        var thirdField = field3[i]
        // append the table html. Note that this isn't a dict anymore!
        myHTML += `
            
Test ${testNum} Results
Volume Min ${firstField}
Total Volume Flowed ${secondField}
Accuracy (%) ${thirdField}
` } else { myHTML += "

No results for Test " + (v + 1) + "

" } } // return the complete HTML outside of the for loop return {"type": "text", "text": myHTML}

Chúc một ngày tuyệt vời! Johannes
Johannes

2 trả lời

Bạn trở lại bên trong vòng lặp, không phải bên ngoài.

Khi bạn trở về từ một chức năng, bạn ngừng thực hiện nó vào thời điểm đó. Mọi thứ sau khi nó sẽ không bị xua tan:

function test() {
    var x = 2
    return x // returns 2
    // everything after this will never get executed.
    // the new value of x will never be returned, x won't even get changed at all.
    x += 5
    return x
}

Vì vậy, khi bạn quay lại bên trong một vòng lặp, bạn chỉ trả lại phần tử đầu tiên:

var arr = [25, 30, 103]
for(var i in arr) {
    return arr[i] + 1  // this will just return 26 and then stop
}

Những gì bạn muốn làm là thế này:

  • Tạo một đối tượng trước vòng lặp sẽ giữ tất cả các kết quả trung gian. Trong hầu hết các trường hợp, đây sẽ là một mảng hoặc một chuỗi.
  • Bên trong vòng lặp, nối kết quả trung gian của bạn vào đối tượng đó.
  • Sau vòng lặp, trả về đối tượng đó.
var arr = [25, 30, 103]
var output_arr = []
for(var i in arr) {
    Push(output_arr, arr[i] + 1)  // append the intermediate result
}
return output_arr  // this will return [26, 31, 104]

Tất cả trong tất cả những gì bạn chỉ cần tái cấu trúc mã của bạn một chút:

var myList = ["Yes", "Yes", "No", "No", "Yes"]
var field1 = [1, 1, "N/A", "N/A", 1] 
var field2 = [1, 1, "N/A", "N/A", 1] 
var field3 = [1, 1, "N/A", "N/A", 1] 

var myHTML = ""  // this string will hold all the tables

for (var v in myList){
    if(myList[v] == "Yes"){
        var testNum = (v + 1)
        var i = v
        var firstField = field1[i]
        var secondField = field2[i]
        var thirdField = field3[i]
        // append the table html. Note that this isn't a dict anymore!
        myHTML += `
            
Test ${testNum} Results
Volume Min ${firstField}
Total Volume Flowed ${secondField}
Accuracy (%) ${thirdField}
` } else { myHTML += "

No results for Test " + (v + 1) + "

" } } // return the complete HTML outside of the for loop return {"type": "text", "text": myHTML}

Chúc một ngày tuyệt vời! Johannes
Johannes

2 trả lời

const url_table = document.getElementById("sitemap").rows

var post_urls = [];

for (let i = 0; i < url_table.length; i++) {
    post_urls.push(url_table[i].cells[0].innerText);
}
3

Cheers,

Peter

Hướng dẫn how do you iterate over a table in javascript? - làm thế nào để bạn lặp qua một bảng trong javascript?

Làm thế nào để có được hàng từ bảng trong JavaScript?

Bộ sưu tập hàng bảng..
Tìm hiểu có bao nhiêu hàng trong một bảng: getEuityByid ("mytable").....
[INDEX] Cảnh báo bên trong của phần tử đầu tiên (chỉ mục 0) trong bảng: ....
Mục (INDEX) Thông báo cho bên trong của phần tử đầu tiên (chỉ mục 0) trong bảng: ....
Được đặt tên (ID) ....
Thay đổi nội dung của ô bảng đầu tiên:.

Chúng ta có thể sử dụng cho vòng lặp trong HTML không?

Cách tiếp cận 1: Sử dụng vòng lặp For: Các phần tử HTML có thể được lặp lại bằng cách sử dụng JavaScript thông thường cho vòng lặp.Số lượng các phần tử được lặp lại có thể được tìm thấy bằng cách sử dụng thuộc tính chiều dài.Vòng lặp cho ba phần, khởi tạo, biểu thức điều kiện và biểu thức tăng/giảm.The HTML elements can be iterated by using the regular JavaScript for loop. The number of elements to be iterated can be found using the length property. The for loop has three parts, initialization, condition expression, and increment/decrement expression.

Tế bào trong JavaScript là gì?

Một chuỗi hoặc số nguyên dựa trên không chỉ định phần tử hoặc phần tử để truy xuất.Nếu một giá trị số nguyên được chỉ định, nó chỉ định chỉ mục của phần tử để truy xuất.Nếu tham số này là một chuỗi, thì nó chỉ định một giá trị cho thuộc tính tên hoặc ID của phần tử hoặc các phần tử để truy xuất.. If an integer value is specified, it specifies the index of the element to retrieve. If this parameter is a string, then it specifies a value for the name or id property of the element or elements to retrieve.