이 코드를 반복하여 'auto-date-time'클래스가 발생할 때마다 다른 변수를 반복하고 설정할 수 있습니까?
tell application "Safari"
set myValue to do JavaScript "document.getElementsByClassName('auto-date-time')[0].innerHTML;" in current tab of window 1
end tell
예 : myValue1 document.getElementsByClassName ( 'auto-date-time') [1] MyValue2 document.getElementsByClassName ( 'auto-date-time') [2] MyValue3 document.getElementsByClassName ( 'auto-date-time') [3
이게 잘 작동한다는 걸 알아
tell application "Safari"
set myValue to do JavaScript "var outPut=[]; var arr=document.getElementsByClassName('sortable fraudScoringTransactionCCSummary');for (var i in arr) {outPut.push(arr[i].innerHTML)};outPut;" in current tab of window 1
end tell
그러나 나는 그것을 다르게하려고 노력하고 있습니다. 그렇게 할 수 있습니까?
나는 이것을 시도했지만 분명히 꽤 나빠 보인다 + 변수의 문제를 해결하지 않을 것입니다
repeat with counter from 1 to 10
tell application "Safari"
set myValue to do JavaScript "document.getElementsByClassName('auto-date-time')[" & counter & "].innerHTML;" in current tab of window 1
end tell
if myValue = missing value then
exit repeat
end if
end repeat
innerHTML
HTML 요소 컬렉션에 대한 속성 값 의 AppleScript 목록을 얻는 가장 깨끗하고 효율적인 방법 은 다음과 같습니다.
tell application "Safari" to tell ¬
the front document to set ¬
myList to do JavaScript ¬
"Array.from(
document.getElementsByClassName('auto-date-time'),
x => x.innerHTML
);"
반환 값이 없다고보고 한 아래 주석을 처리하고 위의 JavaScript에 대한 콘솔 반환 값을 제공하는 대신 시도 할 수있는 대체 방법은 다음과 같습니다.
tell application "Safari" to tell document 1 to set myList to ¬
do JavaScript "[...document.getElementsByClassName('auto-date-time')]
.map( x => x.innerText );"
두 가지 차이점은 innerText
대신 속성을 사용하는 것입니다 innerHTML
(첫 번째 JavaScript에도 적용 할 수 있음)와 배열을 구성하는 데 사용되는 방법 (최신 버전의 Safari를 실행한다고 가정해도 차이가 없어야 함) .
try
당신이하는 경향이있는 방식으로 블록 을 사용하는 습관에서 벗어나도록 노력하십시오 . 예상하지 못한 오류로 인해 스크립트가 종료되는 것을 방지 하거나 오류가 발생 하는 이유를 이해하지 못하는 경우 스크립트를 사용해서는 안됩니다 . 특정 상황에서 발생할 것으로 예상되는 오류를 포착하고 그 원인을 파악하고이를 유리하게 사용할 수 있도록하는 데 사용됩니다. 그렇지 않으면 예상치 못한 오류가 스크립트의 결함 및 발생 위치 /시기에 대해 경고하는 것을 중지하는 것뿐입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다