在函数中,表数据不会附加

时间:2018-02-14 14:38:36

标签: javascript html css html5 html-table

每当我迭代地编写代码时,程序就会按照预期运行,但是当我放入这样的函数时它会中断。

function create_tableElements() { 
    Let myArticle = document.createElement(‘tr’); 
    Let rank = document.createElement(‘td’); 
}

function assign_tableElements() {     
    Let count = 1 
    rank1 = count;
    rank.textContent = rank1;                 
    heroes_name.textContent = heroes[i].name;     
}


function append_tableElements() { 
    myArticle.appendChild(rank);
    myArticle.appendChild(heroes_name); 
}

有谁知道为什么会这样?有没有办法在函数内调用函数?我正在使用for循环来循环JSON。现在,如果我没有放入函数并只编写代码,它将运行得非常好。只是努力提高可读性,并更好地组织我的代码

1 个答案:

答案 0 :(得分:1)

您粘贴的代码(Let代替let或花哨的单引号)存在一些问题。

我将假设您的手机或您使用的任何工具更正了它。所以,让我们说这是你的代码:

function create_tableElements() { 
    let myArticle = document.createElement('tr'); 
    let rank = document.createElement('td'); 
}

function assign_tableElements() { 
    let count = 1;
    rank1 = count; 
    rank.textContent = rank1; 
    heroes_name.textContent = heroes[i].name; 
}

function append_tableElements() { 
    myArticle.appendChild(rank);
    myArticle.appendChild(heroes_name); 
}

您的代码无法正常运作,因为:

  • rank变量是create_tableElements函数的本地变量,append_tableElements函数
  • 无法访问该变量
  • 同样适用于heroes_name功能,它是assign_tableElements功能
  • 的本地功能

您可以通过以下方式解决此问题:

  • 在任何函数之外将这些变量声明为全局变量。不过,这不是一个真正的最佳实践。
  • 更改函数的定义,以便它们可以访问相同的局部变量:您真的需要一个函数来创建元素,而另一个函数是否需要将它们附加到DOM?
  • 您也可以使用立即调用的函数表达式。



(function() {
	// these variables will be visible to all the functions defined in this function, but won't be global : 
	let rank, myArticle, heroes_name;

	function create_tableElements() { 
		myArticle = document.createElement('tr'); 
		rank = document.createElement('td'); 
	}

	function assign_tableElements() { 
		let count = 1;
		rank1 = count; 
		rank.textContent = rank1; 
		heroes_name.textContent = heroes[i].name; 
	}

	function append_tableElements() { 
		myArticle.appendChild(rank);
		myArticle.appendChild(heroes_name); 
	}
  
 	// invoking your functions : 
	create_tableElements();
	assign_tableElements();
	append_tableElements();
})();