如何改进我的JavaScript代码?
我编写了以下代码来生成带有随机数的表,并想询问是否有任何方法可以优化/增强/模块化JavaScript代码,特别是如何改进我的JavaScript代码?,javascript,optimization,Javascript,Optimization,我编写了以下代码来生成带有随机数的表,并想询问是否有任何方法可以优化/增强/模块化JavaScript代码,特别是addColumn和addRow函数 这是HTML代码: <body onload="initlization()"> <form> <input type="button" class="button" value="Add Row" onclick="addRow()" /> <input type="button" class="bu
addColumn
和addRow
函数
这是HTML代码:
<body onload="initlization()">
<form>
<input type="button" class="button" value="Add Row" onclick="addRow()" />
<input type="button" class="button" value="Delete Row" onclick="deleteRow()" />
<input type="button" class="button" value="Add column" onclick="addColumn()" />
<input type="button" class="button" value="delete column" onclick="deleteColumn()" />
</form>
<table>
<tr>
<td></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</body>
这是JavaScript代码:
var blocks;
var myTable;
var nums = [];
function initlization() {
myTable = document.getElementsByTagName("table")[0];
shuffle(); //need to shuffle initially
}
function shuffle() {
//need to get all tds each time the table is shuffled
blocks = document.getElementsByTagName("td");
tableSize = blocks.length;
shuffledArray(0, tableSize);
for (var i = 0; i < tableSize; i++) {
blocks[i].innerHTML = '<span draggable="true">' + nums[i] + '</span>';
}
}
function addColumn() {
// Getting current table size by multiplying number of rows by number of columns
tableSize = (myTable.rows.length) * (myTable.rows[0].cells.length);
// Getting new table size by adding the number of rows
newTableSize = tableSize + (myTable.rows.length);
shuffledArray(tableSize, newTableSize);
index = Math.floor(Math.random() * (myTable.rows[0].cells.length) + 1);
for (var i = 0; i < myTable.rows.length; i++) {
myCell = myTable.rows[i].insertCell(index);
myCell.innerHTML = '<span draggable="true">' + nums[i] + '</span>';
}
}
function addRow() {
tableSize = (myTable.rows.length) * (myTable.rows[0].cells.length);
newTableSize = (myTable.rows.length + 1) * (myTable.rows[0].cells.length);
shuffledArray(tableSize, newTableSize);
index = Math.floor(Math.random() * (myTable.rows.length) + 1);
var row = myTable.insertRow(index);
for (var i = 0; i < myTable.rows[0].cells.length; i++) {
var myCell = row.insertCell(i);
myCell.innerHTML = '<span draggable="true">' + nums[i] + '</span>';
}
}
function deleteColumn() {
var allRows = myTable.rows;
if (allRows[0].cells.length > 2) {
for (var i = 0; i < allRows.length; i++) {
allRows[i].deleteCell(-1);
}
shuffle();
}
}
function deleteRow() {
if (myTable.rows.length > 2) {
myTable.deleteRow(0);
shuffle();
}
}
function shuffledArray( from, to) {
for(i=from; i<to;i++){
nums[i-from]=i;
}
for (var i = to-from; i; i--) {
j= Math.floor(Math.random() *i);
[nums[i - 1], nums[j]] = [nums[j], nums[i - 1]];
}
}
var块;
var-myTable;
var nums=[];
函数初始化(){
myTable=document.getElementsByTagName(“表”)[0];
shuffle();//最初需要洗牌
}
函数shuffle(){
//每次洗牌时需要获得所有tds
blocks=document.getElementsByTagName(“td”);
tableSize=blocks.length;
ShuffleArray(0,表大小);
for(var i=0;i2){
对于(var i=0;i2){
myTable.deleteRow(0);
洗牌();
}
}
函数shuffledArray(从,到){
对于(i=from;i以下测试代码
随机表
var块;
var myTable=document.getElementsByTagName(“表”)[0];
var nums=[];
初始化();
函数初始化(){
myTable=document.getElementsByTagName(“表”)[0];
shuffle();//最初需要洗牌
}
函数shuffle(){
//每次洗牌时需要获得所有tds
blocks=document.getElementsByTagName(“td”);
tableSize=blocks.length;
ShuffleArray(0,表大小);
对于(变量i=0;变量i=2){
对于(var i=0;i2){
myTable.deleteRow(0);
洗牌();
}
}
函数shuffledArray(从,到){
因为(i=from;iis可能更适合尝试在第一行添加initilization();
,无论何时我在标题中看到“紧急”,我都会投反对票。在这里每天看几年之后,我仍然不明白为什么人们认为这是一种适合向志愿者致辞的方式。