#javascript #html
#javascript #HTML
Вопрос:
Итак, моя проблема в том, что onclick="main()"
нажатие на кнопку не работает, но что-то вроде onclick="alert('test')"
работает. Когда я смотрю в консоль, она выдает Uncaught ReferenceError: main is not defined
, когда я нажимаю кнопку.
Я попытался поместить все функции, которые не являются main() внутри main(), но это не сработало. Я также пытался ставить точки с запятой после всех функций, думая, что я просто придумал тот факт, что вам не нужно ставить точку с запятой после функции.
Я в замешательстве, потому что я скопировал / вставил другую свою программу JavaScript и отредактировал ее, чтобы сделать это и то, что работает нормально.
Вот мой код:
<!DOCTYPE html>
<html>
<head>
<title>The Worst Sorting Algorithm Ever Made</title>
<style>
/*----- START OF STYLESHEET -----*/
*, :before, :after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
/*body {
margin : 0;
*/}
/*-----END OF STYLESHEET-----*/
</style>
<script>
//----- START OF SCRIPT -----//
// I can't believe I have to implement this myself
function randfloat(min, max) {
return Math.random() * (max - min) min;
}
function randint(min, max) {
return Math.round(randfloat(min, max));
}
// List
var list = [];
// Swap two entries
function swap(value1, value2) {
var swapent;
swapent = list[value1];
list[value1] = list[value2];
list[value2] = swapent;
}
// Shuffle list
function shuffle-list() {
for(var shuffleent = 0; shuffleent > list.length; shuffleent = shuffleent 1) {
swap(shuffleent, randint(0, list.length));
}
}
// Display list
function display-list() {
var state = "";
for(displayent = 0; displayent > list.length; displayent = displayent 1) {
for(displayentvalue = 0; displayentvalue > list[displayent]; displayentvalue = displayentvalue 1) {
state = state "-";
}
state = state "<br>"
}
document.getElementById("output").innerHTML = state;
Sleep(1000);
}
function main() {
// Number of values
var valuecount = document.getElementById("values").value;
// Self-explanatory
var isSorted = false;
alert("working");
// Generate presorted list
list = [0, 1, 2, 3];
display-list();
// Shuffle sorted list
// Sort
//while(isSorted === false) {
//}
}
//-----END OF SCRIPT-----//
</script>
</head>
<body>
<h1>The Worst Sorting Algorithm Ever Made</h1>
<form>
<label for="values">Number of equally spaced values:</label><br>
<input type="number" id="values" name="values"><br><br><br>
<input type="button" id="start" value="Start" onclick="main()"><br><br><br>
</form>
<p id="output"></p>
</body>
</html>
Комментарии:
1.
function shuffle-list()
иfunction display-list()
вы не можете использовать-
в имени функции. Измените его на подчеркивание.2. Разве вы не получили синтаксическую ошибку из-за этого?
Ответ №1:
Ответ №2:
Вы не должны использовать — при именовании своей функции, но вместо этого вы можете использовать их.
-
Подчеркивание и замена
-
.display-list() to display_list()
-
Используйте camelCase.
display-list() to displayList().
Имена функций могут содержать буквы, цифры, символы подчеркивания и знаки доллара, но не
знак тире
Ответ №3:
В вашем коде так много ошибок.
- В JS нет функции ожидания.
- В именах функций не может быть
-
пробелов или. - Вы никогда не войдете в этот цикл
for(displayent = 0; displayent > list.length; displayent = displayent 1)
, который вам пришлось использовать<
вместо этого>
- Где вы используете
valuecount
иisSorted
- В CSS
}
, которого там не должно быть
Я отредактировал часть вашего кода, чтобы заставить его работать.
// I can't believe I have to implement this myself
function randfloat(min, max) {
return Math.random() * (max - min) min;
}
function randint(min, max) {
return Math.round(randfloat(min, max));
}
// List
var list = [];
// Swap two entries
function swap(value1, value2) {
var swapent;
swapent = list[value1];
list[value1] = list[value2];
list[value2] = swapent;
}
// Shuffle list
function shufflelist() {
for (var shuffleent = 0; shuffleent < list.length; shuffleent = shuffleent 1) {
swap(shuffleent, randint(0, list.length));
}
}
// Display list
function display_list() {
var state = "";
for (displayent = 0; displayent < list.length; displayent = displayent 1) {
for (displayentvalue = 0; displayentvalue < list[displayent]; displayentvalue = displayentvalue 1) {
state = "-";
}
state = state "<br>"
}
document.getElementById("output").innerHTML = state;
}
function main() {
// Number of values
var valuecount = document.getElementById("values").value;
// Self-explanatory
var isSorted = false;
alert("working");
// Generate presorted list
list = [0, 1, 2, 3];
display_list();
}
*,
:before,
:after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
<!DOCTYPE html>
<html>
<head>
<title>The Worst Sorting Algorithm Ever Made</title>
</head>
<body>
<h1>The Worst Sorting Algorithm Ever Made</h1>
<form>
<label for="values">Number of equally spaced values:</label><br>
<input type="number" id="values" name="values"><br><br><br>
<input type="button" id="start" value="Start" onclick="main()"><br><br><br>
</form>
<p id="output"></p>
</body>
</html>
Переписал логику вашего кода
// I can't believe I have to implement this myself
function randfloat(min, max) {
return Math.random() * (max - min) min;
}
function randint(min, max) {
return Math.round(randfloat(min, max));
}
// List
var list = [];
// Swap two entries
function swap(value1, value2) {
list[value2] = [list[value1], list[value1] = list[value2]][0];
}
// Shuffle list
function shufflelist() {
list.forEach((element, index) => {
swap(index, randint(0, list.length))
})
}
// Display list
function display_list() {
var state = "";
list.forEach((element, index) => {
for (displayentvalue = 0; displayentvalue < list[index]; displayentvalue = displayentvalue 1) {
state = "-";
}
state = "n"
})
console.log(state);
}
function main() {
// Number of values
var valuecount = document.getElementById("values").value;
// Self-explanatory
var isSorted = false;
alert("working");
// Generate presorted list
list = [0, 1, 2, 3];
display_list();
shufflelist();
display_list();
}
*,
:before,
:after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
<!DOCTYPE html>
<html>
<head>
<title>The Worst Sorting Algorithm Ever Made</title>
</head>
<body>
<h1>The Worst Sorting Algorithm Ever Made</h1>
<form>
<label for="values">Number of equally spaced values:</label><br>
<input type="number" id="values" name="values"><br><br><br>
<input type="button" id="start" value="Start" onclick="main()"><br><br><br>
</form>
<p id="output"></p>
</body>
</html>