ต้องขออภัยครับ
ก่อนหน้านี้ผมพิมพ์ โดยไม่ดูว่ามีคลาสกำกับที่ li แต่ยังไงก็ควรระบุ แอททิบิ้วที่ครอบ li เหล่านี้ให้ชัดเจนจะดีกว่านะครับ ไม่งั้นโค้ดอาจจะพลาดได้ โคด้ที่ผมแนะนำเป็นดังนี้ครับ
URL GOTO=javascript:var<SP>ct=window.content.document.getElementsByTagName('UL')[0].getElementsByClassName('item');<SP>var<SP>res=ct.length;var<SP>myDiv=window.content.document.createElement("div");myDiv.id="Mycreate";window.content.document.documentElement.appendChild(myDiv);window.content.document.getElementById("Mycreate").textContent=res;void(0);
TAG POS=1 TYPE=DIV ATTR=ID:Mycreate EXTRACT=TXT
PROMPT {{!EXTRACT}}
ตัวแปรที่จะทำให้โค้ดนี้ทำงานไม่ไ่ด้คือ ul ครับ ผมระบุ ul เป็นตัวแรกของหน้าเว็บนั้นๆ ที่เขาเจอ หากมี ul ก่อนหน้าที่จะถึงกลุ่มเป้าหมาย โค้ดนี้จะนับจำนวนผิดพลาดทันทีครับ ถ้าหากระบุ UL หรือ HTML ที่มีแอททิบิ้วอ้างอิงที่ครอบ ul กลุ่มนี้อยู่จะทำให้โค้ดทำงานตรงจุดมาขึ้นครับ
โค้ดที่ผมให้ไปเวลาเอาไปใช้งาน ก็เอา {{!EXTRACT}} ไปใช้ครับ
เช่น
ปกติถ้าเราต้องการดึง li รายการที่ 8 ตามที่ถามมาเราจะเขียนแบบนี้
TAG POS=8 TYPE=li ATTR=CLASS:*item* EXTRACT=TXT
แต่ปัญหาคือ เราไม่สามารถระบุตำแหน่ง POS ที่แน่นอนได้ ดังนั้น
เราถึงต้องใช้โค้ดที่ผมเขียนให้ ไปนับจำนวนลิสรายการทั้งหมด ว่ามีกี่รายการ
แต่ก็ด้วยความที่เราไม่สามารถส่งผ่านค่าที่เรานับจำนวนจากคำสั่ง Javascript ที่เขียนผ่านคำสั่ง URL GOTO มาให้ไอมาโครตรงๆได้ (หรือผมไม่รู้วิธีหว่า
)
ผมก็เลยเขียนคำสั่ง Javascript เพื่อฝั่งค่าที่ได้จากการนับลงไปที่หน้าเว็บฯนั้นเลย
จากนั้นเราก็ใช้คำสั่งไอมาโครทำการ EXTRACT ค่านั้นมาเก็บไว้
พอเราจะใช้งานเราก็นำไปใช้ได้เลยผ่านคำสั่ง EXTRACT ดังนี้
TAG POS={{!EXTRACT}} TYPE=li ATTR=CLASS:*item* EXTRACT=TXT
ผลที่ได้ คือ เราจะได้ตัวเลข หรือข้อความที่อยู่ใน li ตัวสุดท้ายทุกครั้งที่รันโค้ดครับ