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,
///sitemap.xml OR ///sitemap_index.xml0,
///sitemap.xml OR ///sitemap_index.xml1 và
///sitemap.xml OR ///sitemap_index.xml2 / 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
///sitemap.xml OR ///sitemap_index.xml3 và
///sitemap.xml OR ///sitemap_index.xml4 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,
///sitemap.xml OR ///sitemap_index.xml5 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: 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: Trang web của tôi cho các bài đăng trên blog có thể được tìm thấy tạ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];
}
Tiểu sử
///sitemap.xml
OR
///sitemap_index.xml
///sitemap.xml
OR
///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.
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]; }
///sitemap.xml OR ///sitemap_index.xml7 là thẻ neo [
///sitemap.xml OR ///sitemap_index.xml8] với URL. Để lấy chuỗi URL từ nó, chỉ cần gọi thuộc tính
///sitemap.xml OR ///sitemap_index.xml9.
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