【ife】任务二十三:JavaScript和树(二)

var buttons = document.getElementsByTagName('button');
var city = document.getElementById('city');
var nodes = [];
var interval = null;
var value;
buttons[0].onclick = function() {
	value = document.getElementsByTagName('input')[0].value;
	clear();
	deepTraversal(city);
	display();
}
buttons[1].onclick = function() {
	value = document.getElementsByTagName('input')[0].value;
	clear();
	wideTraversal(city);
	display(); 
}
function clear() {
	nodes = [];
	clearInterval(interval);
	var divs = document.getElementsByTagName('div');
	for (var i = 0; i < divs.length; i++) 
		divs[i].style.background = "white";
}
function deepTraversal(node) {
	if (node != null) {  
        nodes.push(node);  
        var children = node.children;  
        for (var i = 0; i < children.length; i++)  
            deepTraversal(children[i]);  
    }  
}
function wideTraversal(selectNode) {
	if (selectNode != null) {
		var queue = [];
		queue.unshift(selectNode);
		while (queue.length != 0) {
			var item = queue.shift();
			nodes.push(item);
			var children = item.children;
			for (var i = 0; i < children.length; i++)
				queue.push(children[i]);
		}
	}
}
function display() {
	var i = 0;
	var flag = 0;
	nodes[i].style.background = 'red'; 
	if (nodes[i].firstChild.nodeValue == value) {
		nodes[i].style.background = 'blue';
		flag = 1;
	}
	interval = setInterval(function() {
		i++;
		if (i < nodes.length) {
			if (nodes[i - 1].firstChild.nodeValue != value)
				nodes[i - 1].style.background = 'white';
			nodes[i].style.background = 'red';
			if (nodes[i].firstChild.nodeValue == value) {
				nodes[i].style.background = 'blue';
				flag = 1;
			}
		} 
		else {
			nodes[nodes.length - 1].style.background = 'white';
			if (flag == 0)
				alert("Not found!");
			clearInterval(interval);
			return;
		}
	}, 1000);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值