![](/img/trans.png)
[英]Why doesn't my JavaScript statement change the background image properly?
[英]Why doesn't my statement change and add attributes for anchor tag?
我正在嘗試更改錨標記的值,並添加新屬性,但它似乎不起作用。
document.getElementsByClassName('button')[0]
.getElementsByTagName('a')[0]
.attr({
href: '#',
data: 'xyz',
name: 'test'
});
問題是您試圖在本機DOM元素上使用jQuery方法。 我的猜測是您的瀏覽器拋出了一個錯誤提示。
而是使用jQuery語法創建實際的jQuery對象:
$('.button a').attr({ ... });
這樣做的好處是它的分數很長。
如果您確實需要使用該選擇器選擇jQuery捕獲的第一個元素,請使用first()
:
$('.button a').first().attr({ ... });
這會將jQuery對象過濾為一個新對象,而無需轉換為本地DOM元素。 但是,它很脆弱,因為它取決於您的標記以進行准確選擇。 我寧願向該按鈕添加另一個類,或針對其祖先元素進行定位:
$('.button.my-extra-class a').attr({ ... });
我整理了一個有關如何設置屬性的示例。
let link = document.getElementsByTagName('a')[0]; link.setAttribute("href", "http://www.google.com"); link.setAttribute("data", "xyz"); link.setAttribute("data-name", "test");
<ul> <li> <a href="#">A link</a> </li> </ul>
https://codepen.io/anon/pen/vaNZKd
以下是有關設置屬性的更多信息: https : //developer.mozilla.org/zh-CN/docs/Web/API/Element/setAttribute
$("button")
.first()
.find("a")
.first()
.attr('href', '@')
.attr('data', 'xyz')
.attr('name', 'test');
這意味着您將獲得第一個<button>
,然后是該按鈕內的第一個<a>
,然后分配數據。
根據您的代碼,我假設這就是您想要的。
您可以嘗試使用querySelectorAll
let anchor = document.querySelectorAll('a.button')[0]; anchor.setAttribute("href", "http://www.google.com");
<a href="#" class="button">A link - will be affected</a><br/> <a href="#" class="button">B link - not affected</a><br/> <a href="#">C link - not affected</a><br/> <a href="#">D link - not affected</a><br/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.