Tag对象和Class name的数组与字符串一起传递,以追加或截断为href"文本值"
<table>
<tr>
<td class="columnOne">
<span class="processTitle">
<a href="sample_US.html">Sample (US version)</a>
</span>
<span class="updateIndicator">12/28/2014</span>
</td>
<td>
<div class="loc_us">
<span class="templateName">Request Form</span>
<span class="templateLinks">
<a target="_blank" href="Templates_Form.xls" class="linkTemplate"></a>
</span>
<span class="processTitle">
<a href="sample2_US.html">Sample2 (US version)</a>
</span>
</div>
</td>
</tr>
</table>
初始化函数调用追加/截断URL的示例:
function initProjectType() {
theSpanTags_ar = document.getElementsByTagName("SPAN")
appendURLs(theSpanTags_ar,"processTitle","?loc=US");
}
function appendURLs(whichTag_ar, whatClassName, theAppendString, URLremoveString) {
for(i=0; i<whichTag_ar.length; i++) { // loop thru the tags
if (whichTag_ar[i].className === whatClassName){ // match tag to class
var theLinkTags_ar = whichTag_ar[i].getElementsByTagName("A") // extract the Anchor into an array
for(j=0; j<theLinkTags_ar.length; j++) { // loop thru the number of Anchors
theLink = theLinkTags_ar[j].nodeValue.href; // extract the href "text value" <<<---help?
if (URLremoveString) { // if truncate the href value
if (theLink.indexOf(URLremoveString) != -1) {
theLink = theLink.substr(URLremoveString.length)
theLinkTags_ar[j].href = theAppendString + theLink;
}
} else { // else append the href value
theLinkTags_ar[j].href = theLink + theAppendString;
}
}
}
}
}
我尝试了各种变体来提取文本字符串值但没有成功,但是假设对象是在数组中传递的,那么像GetElementByID.GetByTagName这样的简单方法似乎不起作用。还试图坚持使用Javascript。
我可能在这里错过了一个基本点,并提前感谢你帮助我不断学习!
答案 0 :(得分:1)
在Javascript中,对象中定义了两种方法:
getAttribute(attributeName)
和setAttribute(attributName, value)
。
因此,一旦您引用了链接,您可能会想要使用以下内容:
for(j=0; j<theLinkTags_ar.length; j++)
{
var link = theLinkTags_ar[j]; //easy access to the link without indexer.
var linkHref = link.getAttribute('href'); //get the href.
if (URLremoveString != null )
{
if(linkHref.indexOf(URLremoveString) != -1){
linkHref = linkHref.substr(URLremoveString.length)
linkHref = theAppendString + linkHref;
}
}
else
{
linkHref = linkHref + theAppendString;
}
link.setAttribute('href', linkHref);
}
答案 1 :(得分:0)
要获取href的值,请直接在链接上阅读 href 属性:
theLink = theLinkTags_ar[j].href;
要更轻松地选择所需元素,请考虑:
var nodes = document.querySelectorAll('span.processTitle");
如果你想要那里面的A元素:
var nodes = document.querySelectorAll('span.processTitle > a');
不确定是否支持IE 8中的复杂选择器,因此您可能希望保留循环方法。
答案 2 :(得分:0)
上面的回答使用.getAttribute('href')来回复href文本值完美无缺。
请注意,代替使用link.setProperty('href',linkHref)它不起作用,但转换到link.setAttribute('href',linkHref)解决了这个问题。
最终片段:
for(j=0; j<theLinkTags_ar.length; j++)
{
var link = theLinkTags_ar[j]; //easy access to the link without indexer.
var linkHref = link.getAttribute('href'); //get the href.
if (URLremoveString != null )
{
if(linkHref.indexOf(URLremoveString) != -1){
linkHref = linkHref.substr(URLremoveString.length)
linkHref = theAppendString + linkHref;
}
}
else
{
linkHref = linkHref + theAppendString;
}
link.setAttribute('href', linkHref);
}
谢谢!