开发者

Can't put search results into Hyperlinks and append to a div

okay i have come across a simple javascript code that will search all the hyperlinks in a page which works briliantly fast. the only problem is that the browser freezes when it tries to remake these links in a div, no error ju开发者_如何学编程st as soon as i push the button the browser refuses to load. as you can see it gets the input from a form then searches every hyperlink for these terms then is supposed to populate a div with links but it doesn't. the code is as follows.

function search0(){
var lists = document.getElementsByTagName("a");
for (var i = 0; i < lists.length; i++) {

var output = lists[i];
var team1 = document.getElementById("search1").value;
var matchPos1 = output.innerHTML.search(team1);

if(matchPos1 != -1){

var team2 = document.getElementById("search2").value;   
var matchPos2 = output.innerHTML.search(team2);

    if(matchPos2 != -1){

    var elem1 = document.createElement("a")
        var styleattr=document.createAttribute("href");
        styleattr.nodeValue=output;
        elem1.setAttributeNode(styleattr);  
    var text1 = document.createTextNode(output.innerhtml);
        elem1.appendChild(text1);
    var parentdiv = document.getElementById("frame2");
    parentdiv.appendChild(elem1);
    }
}
}
}


You are creating an infinite loop.
The nodeList you create with document.getElementsByTagName("a") is live i.e. if you add a link to the page it will appear in this list automatically! Yes, that's right, even without requerying. Here's a reference doc.

You are adding links to the nodeList which are then matched and added to the end on the nodeList which are then matched and so on and so on

To do what you want to do you should create an initial array of links like this.

//creates a real js array from a nodelist
var list = Array.prototype.slice.call( document.getElementsByTagName("a"), 0 );

Here is an explanation of Array.prototype.slice.call


Also change case-sensitive mistake:

var text1 = document.createTextNode(output.innerhtml);

To

var text1 = document.createTextNode(output.innerHTML);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜