2013-07-27 27 views
5

tôi có mã javascript này:Sử dụng biến javascript trên html <a>

<script ="text/javascript"> 
    var newUrl=window.location.href; 
    var pathArray=""; 
    pathArray=newUrl.substr(newUrl.lastIndexOf("?")+1); 
</script> 

Tôi muốn sử dụng biến pathArray như một phần của href tôi trên thẻ

Đây là mã html của tôi

<a href="game.html?"+pathArray> 
    <img src="img/RestartButton.png" style="position:absolute; 
    left:80px; top:220px"> 
</a> 

nhưng có vẻ như nó không đọc giá trị nếu biến, nhưng thay vào đó là tên của biến đó.

+0

Xin lỗi, nhưng bạn không thể chỉ đặt tên của biến Javascript ở bất kỳ đâu trong đánh dấu HTML của bạn và mong đợi nó hoạt động. –

+0

Biến pathArray sẽ không phải là biến toàn cầu, bởi vì nó nằm trên tệp HTML? –

+1

HTML và Javascript là hai thứ khác nhau ... HTML không _have_ biến. Nó chắc chắn không có Javascript. HTML cũng không có toán tử '+' cho đối số. Đó là một ngôn ngữ đánh dấu, không phải là ngôn ngữ lập trình. –

Trả lời

1

Bạn không thể đặt biến javascript ở bất kỳ đâu trong html. Thay vào đó, bạn cần lấy phần tử dom thông qua tập lệnh và nối thêm thuộc tính href. cung cấp cho neo của bạn một id hoặc classname và thử làm ví dụ này.

<a id="myLink" href="game.html"> 
    <img src="img/RestartButton.png" style="position:absolute;left:80px; top:220px"> 
</a> 

<script type="text/javascript">; 
    document.getElementById('myLink').href += window.location.search 
</script> 
+1

Thay vì bán phá giá mã trên OP, tại sao không _explain_ giải pháp? –

+0

Tôi đã thử điều đó, nhưng nó vẫn giữ cho tôi lỗi này: Loại không bắt buộcLỗi: Không thể đọc thuộc tính 'href' của null tại tệp: ///android_asset/www/lose.html? Level1: 8 –

1

Bạn cũng sẽ phải sử dụng JavaScript cho việc này. Đầu tiên cho neo của bạn một ID:

<a id="myLink" href="game.html?"><img src="img/RestartButton.png" style="position:absolute; left:80px; top:220px"></a>

và sau đó thêm sau để mã JavaScript của bạn:

document.getElementById('myLink').href += pathArray;

Mã này sẽ bổ sung thêm nội dung của biến chuỗi của bạn để href tài sản của nguyên tố neo .

1

Đầu tiên, làm cho neo dễ dàng hơn để chọn bằng cách đặt cho nó một số nhận dạng.

<a href="#" id="pathLink"></a> (Điều này được giả định có nhiều hơn một neo trên trang của bạn)

Sau đó, trong kịch bản của bạn ở trên bao gồm:

var anchor = document.getElementById("pathLink"); 

Thẻ neo có một tài sản href mẹ đẻ, vì vậy giao cái mới là dễ dàng như thế này:

Rewrite:

var anchor = document.getElementById("pathLink").href += pathArray; 
1

Nó sẽ không hoạt động như thế. Bạn sẽ phải lặp qua các neo của bạn bằng cách sử dụng JavaScript.

Điều này chưa được kiểm tra. Tôi giả sử bạn muốn điều này xảy ra với nhiều hơn một liên kết anchor.

HTML:

<a class="updatethis" href="game.html">...</a> 
<a href="not-game.html">...</a> 
<a class="udpatethis" href="game.html">...</a> 

JavaScript: var neo = document.getElementsByTagName ('a');

for (var i = 0, a; a = anchors[i++];) { 
    if (a.className === 'updatethis') { 
     a.href += window.location.search; 
    } 
} 
8

Bạn đang trộn javascript vào HTML của mình.

Tôi tin rằng biến pathArray của bạn cũng sẽ không chứa những gì bạn đang mong đợi.

Hãy thử điều này trong thẻ script của bạn:

var gamePath = "game.html?" + window.location.search.replace("?", ""); 
document.getElementById("gameAnchor").setAttribute("href", gamePath); 

Và thêm một id để neo của bạn:

<a href="#" id='gameAnchor'> 

Các javascript sẽ nhận được tất cả GET thông số từ url hiện tại và sau đó thay thế các thuộc tính href trong phần tử có id là gameAnchor với game.html của bạn được ghép với thông số GET trong url.

-1

Hãy nghĩ đến việc sử dụng một số công cụ mẫu như undescore, ria mép hoặc doT.js. bạn có thể dễ dàng thay thế mã định danh html hoặc một phần của các biến dữ liệu của mẫu.

+0

tại sao downvote câu trả lời của tôi? nó không thích hợp? – netalex

Các vấn đề liên quan