Search

몽골 프로그램 페이지 자동화 (1)

기본 틀

항공권 잘 연결한 버전

<script> // 미리 문자열 배열을 저장해둡니다. const savedStrings = ["3박4일남자만 연결된 글 ", "3박4일여자만 연결된 글", "4박5일여자만연결된 글", "IN인천 11:30 OUT런던 12:30", "IN롤롤 11:30 OUT런던 12:30"]; const savedAirlines = ["3박4일남자만", "3박4일여자만", "4박5일여자만", "5박4일모두", "1박2일"]; let matchStrings= []; // matchStrings를 let으로 변경하여 재할당할 수 있도록 수정합니다. let matchStringsInfo = []; // 매치된 문자열과 해당하는 아이템의 수를 저장할 배열을 선언합니다. let stringRow = []; // 전체 notion-collection-item 문자열을 저장할 배열을 선언합니다. // 저장된 배열과 데이터 블록 아이디가 포함한 문자열 중 겹치는 것을 찾는 함수를 정의합니다. function findMatchingString(dataBlockId) { const button = document.querySelector(`[data-block-id="${dataBlockId}"]`); const items = Array.from(button.querySelectorAll(".notion-collection-item")); let matchedString = null; let matchedItemCount = 0; // 매치된 아이템의 수를 저장할 변수를 초기화합니다. // stringRow 배열 초기화 stringRow = []; for (let i = 0; i < savedAirlines.length; i++) { const savedString = savedStrings[i]; const savedAirline = savedAirlines[i]; for (const item of items) { if (item.textContent.includes(savedAirline)) { matchedString = savedString; matchedItemCount++; // 매치된 아이템의 수를 증가시킵니다. // 중복되지 않는 경우에만 matchStrings 배열에 추가합니다. if (!matchStrings.includes(matchedString)) { matchStrings.push(matchedString); } } stringRow.push(item.textContent.trim()); // 모든 문자열을 stringRow 배열에 추가합니다. } // 매치된 아이템의 수와 문자열을 matchStringsInfo 배열에 추가합니다. if (matchedItemCount > 0) { matchStringsInfo.push({string: matchedString, count: matchedItemCount}); } // 변수를 초기화합니다. matchedString = null; matchedItemCount = 0; } } // matchStrings 배열을 순회하여 각 문자열에 대해 새로운 collection_block div를 추가하는 함수를 정의합니다. function addNewCollectionBlocks() { matchStrings.forEach(matchedString => { addNewCollectionBlock(matchedString); }); } // 새로운 collection_block div를 추가하는 함수를 정의합니다. function addNewCollectionBlock(matchedString) { const slide = document.querySelector('.slide'); const newButton = document.createElement('div'); newButton.classList.add('button'); newButton.innerHTML = ` <button type="button" onclick="location.href='https://wannago.oopy.io/why/rodlsdugod'" class="card"> <div class="card_text"> <a class="head"><b>${getAssociatedAirline(matchedString)}</b></a><br> <div class="middle_box"> <a class="middle">${matchedString}</a><br> </div> <div class="container container${slide.children.length + 1}"> <!-- 아이템들이 추가될 곳입니다. --> </div> </div> </button> `; slide.appendChild(newButton); // 변수명 수정 및 추가된 버튼을 slide에 추가합니다. // 매치된 아이템의 수를 찾아 해당하는 container에 텍스트를 추가합니다. const container = newButton.querySelector(`.container${slide.children.length}`); const matchedItem = matchStringsInfo.find(item => item.string === matchedString); if (matchedItem) { // "남자"가 몇 번 포함되어 있는지 카운트합니다. const maleCount = (matchedString.match(/남자/g) || []).length; const femaleCount = matchedItem.count - maleCount; // 전체 수에서 "남자" 수를 뺀 나머지가 "여자"의 수입니다. // "남자"의 수만큼 item1을 추가합니다. for (let i = 0; i < maleCount; i++) { container.insertAdjacentHTML('beforeend', `<div class="item1"></div>`); } // "여자"의 수만큼 item2를 추가합니다. for (let i = 0; i < femaleCount; i++) { container.insertAdjacentHTML('beforeend', `<div class="item2"></div>`); } container.insertAdjacentHTML('beforeend', `<div class="add-text">. . .<b>${matchedItem.count}</b>이 함께하는 중!</div>`); // 아이템 개수가 5개를 초과하는 경우 초과된 아이템을 제거합니다. const itemsInContainer = container.querySelectorAll('.item'); if (itemsInContainer.length > 5) { for (let i = 5; i < itemsInContainer.length; i++) { itemsInContainer[i].remove(); } } } } // matchedString에 해당하는 항공사를 가져오는 함수를 정의합니다. function getAssociatedAirline(matchedString) { const index = savedStrings.indexOf(matchedString); if (index !== -1 && index < savedAirlines.length) { return savedAirlines[index]; } return ""; } // findMatchingString 함수를 실행하여 matchStrings 배열을 채운 후, addNewCollectionBlocks 함수를 호출하여 div를 추가합니다. findMatchingString("86ca869f-be7d-4858-9d72-d0854151227d"); addNewCollectionBlocks(); // matchStringsInfo 배열과 stringRow 배열을 출력합니다. console.log(matchStringsInfo); console.log(stringRow); // 'in'으로 시작하는 문자열을 <a class="middle"> 태그 안에 자동으로 추가합니다. addStringsWithInToMiddle(); </script>
Arduino
복사

3월 25일 (수정전)