2012-02-09 21 views
9

Làm cách nào để tìm hiểu yếu tố mà <script> nằm ở đâu?
Như một ví dụ, chúng ta hãy thực hiện việc nàyPhần tử hiện tại trong Javascript là gì?

<div> 
<script type="text/javascript"> 
    var time = new Date(), hrs = time.getHours(), min = time.getMinutes(); 
    document.write('It is '+hrs+":"+(min<10?'0':'')+min); 
</script> 
</div> 

Sau đó, nếu tôi muốn thay đổi điều này để một cái gì đó hiện đại hơn, làm thế nào tôi có thể tìm ra những yếu tố chúng ta đang ở?
Vì vậy, tôi muốn viết, ví dụ trong jQuery

$(thisdiv).html('It is '+hrs+":"+(min<10?'0':'')+min); 

nhưng làm thế nào để tôi nhận được thisdiv?
Có, tôi biết, tôi có thể đặt một ID trên đó, nhưng tôi có cảm giác rằng sẽ không cần thiết. Trình duyệt biết chúng ta đang ở đâu, nếu không nó thậm chí không thể làm document.write!

Vì vậy, đề xuất? Tôi đã tìm kiếm, nhưng không thể tìm thấy nó. Có đơn giản đến nỗi tôi nhìn rõ ràng không?

Trả lời

20

Script được thực hiện theo thứ tự xuất hiện trong tài liệu. Nội dung của thẻ tập lệnh được đánh giá khi gặp phải, vì vậy, phần tử <script> cuối cùng luôn là phần tử hiện tại.

Code:

<div> 
    <script> 
    var scriptTag = document.getElementsByTagName('script'); 
    scriptTag = scriptTag[scriptTag.length - 1]; 

    var parent = scriptTag.parentNode; 
    </script> 
</div> 
+0

+1, tôi không thể tin rằng tôi bỏ qua khái niệm khá cơ bản: ( – danjah

+0

1, giải pháp thanh lịch. – osahyoun

+0

Cảm ơn bạn! Tôi đã không nhận thức được rằng kịch bản mới nhất là bản cuối cùng trong danh sách, trong quá trình thực thi, vì vậy đây là giải pháp mà tôi đang tìm kiếm. Và nó cũng hoạt động trên tất cả các trình duyệt mà tôi đã thử nghiệm, thậm chí là Netscape 6. (Vâng, tôi hoàn toàn giống như vậy .) –

0
$('script#some_id').parent().html('blah blah'); 
+2

* Vâng, tôi biết, tôi có thể đặt một ID vào nó, nhưng tôi có cảm giác rằng sẽ không cần thiết. * –

+0

Mr Lister đã đề cập không đưa ra kịch bản một id, trước đây trên SO tôi đã tìm kiếm một giải pháp tương tự vì tôi có nhiều sc ript els trong một tài liệu mà tất cả yêu cầu một kiến ​​thức về "chúng ở đâu", tốt nhất tôi có thể đưa ra là thiết lập một var duy nhất ngẫu nhiên trong khối script để xác định quyền truy cập trong các kịch bản khác (http://stackoverflow.com/questions/3057628/cách tự xác định-vị trí-của-một-tập lệnh-thẻ-trong-the-dom). Vì vậy, có lẽ id là cách để đi ... háo hức xem Q. – danjah

0

Hãy thử điều này

<div id="mydiv"> 
<script type="text/javascript"> 
    var time = new Date(), hrs = time.getHours(), min = time.getMinutes(); 
    document.getElementById('mydiv').innerHTML = 'It is '+hrs+":"+(min<10?'0':'')+min; 
</script> 
</div> 
+1

* Có, tôi biết, tôi có thể đặt một ID trên đó, nhưng tôi có cảm giác rằng sẽ không cần thiết. * –

+0

oh xin lỗi tôi đã không có tuyên bố đó, tôi nghĩ rằng ông Rob W là khá gần với giải pháp của bạn –

1

Firefox:

document.currentScript.parentElement 

Chrome:

document.scripts.length 
Các vấn đề liên quan