2015-11-10 59 views
0

請更改代碼以更改href(html,JavaScript)中的域。使用javascript更改href的<a>元素

例:

<a id="NewL" href="http://exemple.com/indice.html">Indice</a> 

要:

<a id="NewL" href="http://exemple.net/indice.html">Indice</a> 

爲例代碼不工作:

<script type = "text/javascript" > 
function replace() { 
    var aEls = document.getElementById('NewL').getElementsByTagName('a'); 
    aEls.href = aEls.href.replace('http://exemple\.com', 'http://exemple\.net'); 
} 
</script> 

謝謝,@ t.niese:

<a id="NewL" href="http://exemple.com/indice.html">Indice</a> 

<script type="text/javascript" > 
function replace() { 
    var aEl = document.getElementById('NewL'); 
    aEl.href = aEl.href.replace('http://exemple.com', 'http://exemple.net'); 
} 
replace(); 
</script> 

請幫助我,在各種ID在同一頁面沒有改變:

<a id="NewL" href="http://exemple.com/indice.html">Indice</a> 
    <a id="NewL" href="http://exemple.com/indice2.html">Indice 2</a> 

    <script type="text/javascript" > 
    function replace() { 
     var aEl = document.getElementById('NewL'); 
     aEl.href = aEl.href.replace('http://exemple.com', 'http://exemple.net'); 
    } 
    replace(); 
    </script> 

回答

1

Element.getElementsByTagName()

[...]指定的元素,下面的子樹被搜索,排除元素本身[ ...]

所以你搜索你的元素內的標籤名a元素與ID NewL

因爲document.getElementById('NewL')已經是你的a元素,你將不需要0​​,因爲,你應該只寫:

var aEl = document.getElementById('NewL'); 

而且你replace是錯誤的,你不需要逃避.如果您將搜索作爲字符串傳遞。

aEl.href = aEl.href.replace('htp://exemple.com', 'htp://exemple.net'); 

那旁邊Element.getElementsByTagName()返回元素的列表,所以即使你的搜索將是正確的,你需要使用一個循環通過該結果進行迭代。

+0

感謝所有評論的變量, 不工作: – jmsmarcelo

+0

@jmsmarcelo這裏是一個[的jsfiddle(https://jsfiddle.net/aakauntq/),它工作正常時, '.com'被'.net'替代,所以你很可能做了其他錯誤。 –

+0

@jmsmarcelo控制檯中是否有錯誤消息?你在調用替換方法嗎? – epascarello

0

你的JavaScript更改爲以下:

<script type = "text/javascript" > 
function replace() { 
    var aEl = document.getElementById('NewL'); 
    aEl.href = aEl.href.replace('htp://exemple\.com', 'htp://exemple\.net'); 
} 
</script> 

您已經由getElementById選擇的元素,無需找其中的一類。另外你拼寫錯誤,我改變aEl