У меня есть следующая проблема: У меня есть html-файл с именем index.html
. Затем у меня есть два внешних файла javascript, называемые algoritmus.js
и vypis_stavkujusich.js
.Добавил несколько внешних javascripts в html-файл, один перестали работать
Я добавил два JavaScripts в голове index.html, как и это:
<script src="js/algoritmus.js"> </script>
<script src="js/vypis_stavkujucich.js"> </script>
Сначала следует вставить информацию в таблицу в теле, второй должен вставить текст ниже таблицы. Теперь к моей проблеме: когда я добавляю эти сценарии javascript отдельно, они работают нормально. Когда я их добавляю, только ВТОРОЙ из них работают! Я проверил дважды путь src, у меня они оба завернуты в функцию init(), что позволяет запускать их только при полной загрузке страницы. Я действительно не могу найти решение самостоятельно. Я не хочу помещать весь код в один файл js, я хочу разделить их, чтобы они соответствовали хорошим привычкам к программированию. Надеюсь, что у ребят будет помогать мне и жаль мой английский (мой первый пост на stackovewflow)
index.html
<!doctype html>
<html>
<head>
<!-- IMPORT JAVASCRIPT AND JQUERY -->
<script src="js/algoritmus.js"> </script>
<script src="js/vypis_stavkujucich.js"> </script>
<title> Virtuálne hry VirGames </title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<!-- IMPORT CSS -->
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/main.css" />
<link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
</head>
<body>
<script>
var teraz=new Date();
var nastavMinuty=function() {
\t var minutyPred=teraz.getMinutes();
\t var minutyPo;
\t if(minutyPred.length>3) {
\t \t minutyPo='0'+minutyPred;
\t \t return minutyPo;
\t }
\t else
\t \t return minutyPred;
}
document.write("Aktuálny dátum: "+teraz.getDate()+"."+(teraz.getMonth()+1)+"."+teraz.getFullYear());
document.write("<br> Aktuálny čas: "+teraz.getHours()+":"+nastavMinuty()+":"+teraz.getSeconds());
</script>
<h1 id="main_h"> Virtuálne hry VirGames - s nami vyhráva každý ! </h1>
<table id="tabulka_zapasov">
<tr>
<th> Číslo zápasu </th>
<th> Zápas </th>
<th> 1 </th>
<th> X </th>
<th> 2 </th>
</tr>
</table>
<div id="prava_strana">
Generovať zápasov: <input type="text" id="pocet_zapasov" />
<input type="submit" value="Generovať!" id="generuj_submit" /> <br />
Vytvoriť imaginárnych stavkárov:
<input type="text" id="pocet_stavkarov" />
<input type="submit" value="Vytvoriť" id="vytvorit_submit" />
<div id="udaje_o_stavkaroch"></div>
<table id="tabulka_stavok">
<tr>
<th> stavkári podali 1 </th>
<th> stavkári podali X </th>
<th> stavkári podali 2 </th>
<th> celkom € </th>
</tr>
</table>
</div>
<div id="vypis_stavkujucich">
<br id="clear-fix" />
</body>
</html>
algoritmus.js
function init() {
function Stat(nazov,rank) {
\t this.nazov=nazov;
\t this.rank=rank;
\t this.favorit=false;
}
var staty=[];
var brazilia=new Stat("Brazília",9.6);
var anglicko=new Stat("Anglicko",8.2);
var cesko=new Stat("Česko",4.5);
var slovensko=new Stat("Slovensko",2.2);
var polsko=new Stat("Poľsko",4.1);
var ukrajina=new Stat("Ukrajina",4.2);
var spanielsko=new Stat("Španielsko",9.5);
var taliansko=new Stat("Taliansko",8.7);
var madarsko=new Stat("Maďarsko",4.8);
var japonsko=new Stat("Japonsko",5.1);
var mexiko=new Stat("Mexiko",6.6);
var rusko=new Stat("Rusko",5.6);
var chorvatsko=new Stat("Chorvátsko",4.9);
var rumunsko=new Stat("Rumunsko",3.9);
var finsko=new Stat("Fínsko",6.8);
var svedsko=new Stat("Švédsko",6.5);
var island=new Stat("Island",5.9);
var usa=new Stat("USA",7.2);
var kolumbia=new Stat("Kolumbia",5.7);
var venezuela=new Stat("Venezuela",6.2);
var bulharsko=new Stat("Bulharsko",3.1);
var cina=new Stat("Čína",5.5);
staty.push(finsko);
staty.push(svedsko);
staty.push(island);
staty.push(usa);
staty.push(kolumbia);
staty.push(venezuela);
staty.push(bulharsko);
staty.push(cina);
staty.push(madarsko);
staty.push(japonsko);
staty.push(mexiko);
staty.push(rusko);
staty.push(chorvatsko);
staty.push(rumunsko);
staty.push(brazilia);
staty.push(anglicko);
staty.push(cesko);
staty.push(slovensko);
staty.push(polsko);
staty.push(ukrajina);
staty.push(spanielsko);
staty.push(taliansko);
var mena=["Gustáv","František","Kadimír","Herbert","Hugo","Bonifác","Jožko","Sergej","Norbert","Kazimír","Branislav","Semir"];
var priezviska=["Janovský","Papadopulos","NejedzChleba","Krutý","Hlavatý","Ježo","Bujak","Had","Fuk","Metalový","Bulo","Aspirin","Kreken","Kunik","Kukuricudus","Vladis"];
function Stavkar(meno,priezvisko) {
\t this.meno=meno+" "+priezvisko;
\t this.peniaze=vratNahodneCislo(100);
}
var stavkari=[];
function vytvorStavkarov(pocet) {
\t for(i=0;i<pocet;i++) {
\t \t stavkar=new Stavkar(mena[vratNahodneCislo(mena.length)],priezviska[vratNahodneCislo(priezviska.length)]);
\t \t stavkari.push(this.stavkar);
\t }
}
var vytvorit_tlacitko=document.getElementById("vytvorit_submit");
vytvorit_tlacitko.onclick=function() {
\t var kolkoStavkarov=document.getElementById("pocet_stavkarov").value;
\t vytvorStavkarov(kolkoStavkarov);
\t var udaje_o_stavkaroch=document.getElementById("udaje_o_stavkaroch");
\t for(i=0;i<kolkoStavkarov;i++) {
\t \t var novyStavkar=document.createElement("p");
\t \t novyStavkar.innerHTML=stavkari[i].meno+" bude podávať za "+stavkari[i].peniaze+"€ na "+vyberPodanie();
\t \t udaje_o_stavkaroch.appendChild(novyStavkar);
\t }
}
function vyberPodanie() {
\t podanie=vratNahodneCislo(3);
\t if(podanie==1)
\t \t return 1;
\t else if(podanie==2)
\t \t return 'X';
\t else
\t \t return 2;
}
vytvorStavkarov(10);
var prvyKurz,xKurz,druhyKurz=0;
var kurzyX=[2.40,2.60,2.80,3.00,3.20,3.40,3.60,3.80];
var kurzyFavorit=[1.40,1.45,1.50,1.60,1.70,1.80,1.90];
var kurzyOutsider=[2.10,2.20,2.25,2.30,2.45,2.50,2.60,2.70,2.80];
var generuj_tlacitko=document.getElementById("generuj_submit");
generuj_tlacitko.onclick = function generujZapasy(pocetZapasov) {
\t var kolkoZapasov=document.getElementById("pocet_zapasov").value;
\t pocetZapasov=kolkoZapasov;
\t var tabulka=document.getElementById("tabulka_zapasov");
\t for(i=1;i<=pocetZapasov;i++) {
\t \t var novyRiadok = document.createElement("tr");
\t \t tabulka.appendChild(novyRiadok);
\t \t var prvaBunka=document.createElement("td");
\t \t var druhaBunka=document.createElement("td");
\t \t var tretiaBunka=document.createElement("td");
\t \t var stvrtaBunka=document.createElement("td");
\t \t var piataBunka=document.createElement("td");
\t \t prvaBunka.innerHTML=i;
\t \t druhaBunka.innerHTML=vratZapas();
\t \t if(prvyStat.favorit) {
\t \t \t tretiaBunka.innerHTML=kurzyFavorit[vratNahodneCislo(kurzyFavorit.length)];
\t \t \t piataBunka.innerHTML=kurzyOutsider[vratNahodneCislo(kurzyOutsider.length)]
\t \t }
\t \t else {
\t \t \t tretiaBunka.innerHTML=kurzyOutsider[vratNahodneCislo(kurzyOutsider.length)];
\t \t \t piataBunka.innerHTML=kurzyFavorit[vratNahodneCislo(kurzyFavorit.length)]
\t \t }
\t \t stvrtaBunka.innerHTML=kurzyX[vratNahodneCislo(kurzyX.length)];
\t \t novyRiadok.appendChild(prvaBunka);
\t \t novyRiadok.appendChild(druhaBunka);
\t \t novyRiadok.appendChild(tretiaBunka);
\t \t novyRiadok.appendChild(stvrtaBunka);
\t \t novyRiadok.appendChild(piataBunka);
\t }
}
function vratNahodneCislo(poAkeCislo) {
\t var nahodneCislo=Math.floor(Math.random()*poAkeCislo);
\t return nahodneCislo;
}
function vratZapas() {
\t var favorit;
\t prvyStat=staty[vratNahodneCislo(staty.length)];
druhyStat=staty[vratNahodneCislo(staty.length)];
\t if(druhyStat==prvyStat)
\t \t druhyStat=staty[vratNahodneCislo(staty.length)].nazov;
\t var zapas=prvyStat.nazov+" vs "+druhyStat.nazov;
\t if(prvyStat.rank>druhyStat.rank)
\t \t prvyStat.favorit=true;
\t else
\t \t druhyStat.favorit=true;
\t return zapas;
}
};
window.onload=init;
vypis_stavkujucich.js
function initialize() {
var vypis_s=document.getElementById("vypis_stavkujucich");
var r=document.createElement("p");
r.innerHTML="nieco";
vypis_s.appendChild(r);
};
window.onload=initialize;
Я бы сказал, что это может быть переменной конфликт имен. Попробуйте обернуть оба сценария в (function() {....}) – GrumpyHat
Сначала я завернул в init() {}; функция, а вторая - в initialize() {}; функцию, и пусть оба из них инициализируются только после того, как страница полностью загружена окном.OnLoad = INIT; –
Вы также выполняете 'window.onload = initialize;'? Вы можете назначить одну вещь только «window.onload», поэтому последняя работает только одна. – Barmar