2014-12-18 3 views
2

У меня есть простой HTML-файл, который я пытаюсь связать с файлом javascript. Оба находятся в C: \ Users \ Me \ Test (так что C: \ Users \ Me \ Test \ test.html и C: \ Users \ Me \ Test \ test.js)Почему мой HTML-файл не найдет мой файл javascript?

HTML:

<!doctype html> 
<html> 
<head> 
    <title>SoundCloud API</title> 
    <script src="http://connect.soundcloud.com/sdk.js"></script> 
    <script src="test.js"></script> 

</head> 
<body> 
    <ul> 
     <li><a href="#" class="genre">EDM</a></li> 
     <li><a href="#" class="genre">classical</a></li> 
     <li><a href="#" class="genre">soundtrack</a></li> 
    </ul> 
    <div id="target"></div> 
</body> 
</html> 

и Javascript:

function playSomeSound(genre){ 
    SC.get('/tracks', { 
     genres: genre, 
     bpm: { 
      from: 100 
     } 
    }, function(tracks){ 
     var random = Math.floor(Math.random()*49); 
     SC.oEmbed(tracks[random].uri, {auto_play: true}, document.getElementById('target')); 
    }); 
} 

window.onload = function(){ 
    SC.initialize({ 
     client_id: '*******' 
    }); 

    var menuLinks = document.getElementsByClassName('genre'); 
    for (var i = 0; i < menuLinks.length; i++){ 
     var menuLink = menuLinks[i]; 
     menuLink.onclick = function(e){ 
      e.preventDefault(); 
      playSomeSound(menuLink.innerHTML); 
     }; 
    } 
}; 

(Обратите внимание, что идентификатор клиента на самом деле правильный ID в коде.)

HTML, правильно отображает три ссылки, но ничего не происходит, когда я нажимаю их. Я что-то упускаю?

Для чего это стоит, я следую this учебнику. Спасибо за любые идеи/советы!

Редактировать: обратите внимание, что когда страница HTML загружается, я могу просмотреть исходный код, а затем нажать «test.js», и он действительно загружает источник Javascript ... поэтому он правильно видит JavaScript, что заставляет меня думать есть что-то с самого Javascript ...

Edit 2: Я был в состоянии получить редактор, я использую (SublimeText 2) построить JavaScript, и получить эту ошибку:

function (tracks){

SyntaxError: Unexpected token (

означает, что он не ожидает "(" после "функции"? ... возможно, что помогает?

Edit 3: Хорошо, я искал вокруг и был в состоянии получить другую ошибку, добавив {} вокруг BPM:

function playSomeSound(genre){ 
    SC.get('/tracks', {genres: genre}, {bpm: { from: 100 }}, 
     function(tracks){ 
      var random = Math.floor(Math.random()*49); 
      SC.oEmbed(tracks[random].uri, {auto_play: true}, document.getElementById('target')); 
     }); 
    console.log(genre); 
} 


window.onload = function(){ 
    SC.initialize({ 
     client_id: "6e6078f1408f62443f757b4c34d55e12" 
    }); 

    var menuLinks = document.getElementsByClassName('genre'); 
    for (var i = 0; i < menuLinks.length; i++){ 
     var menuLink = menuLinks[i]; 
     menuLink.onclick = function(e){ 
      e.preventDefault(); 
      playSomeSound(menuLink.innerHTML); 
     }; 
    } 
}; 

Теперь, я получаю ошибку:

window.onload = function(){

ReferenceError: window is not defined

+4

Есть сообщение об ошибке в консоли JavaScript? –

+0

?? – djowinz

+0

@DyllenJamesOwens - Нет, это будет ссылка на корень. –

ответ

0

Собственно, проблема не в том, что вы пришли. Javascript файл был загружен правильно (попробуйте добавить этот код:

function playSomeSound(genre){ 
    SC.get('/tracks', { 
    genres: genre, 
    bpm: { 
     from: 100 
    } 
}, function(tracks){ 
    var random = Math.floor(Math.random()*49); 
    SC.oEmbed(tracks[random].uri, {auto_play: true}, document.getElementById('target')); 
}); 
} 

window.onload = function(){ 
SC.initialize({ 
    client_id: '*******' 
}); 

    alert("Hello! I am an alert box!!"); 
var menuLinks = document.getElementsByClassName('genre'); 
for (var i = 0; i < menuLinks.length; i++){ 
    var menuLink = menuLinks[i]; 
    menuLink.onclick = function(e){ 
     e.preventDefault(); 
     playSomeSound(menuLink.innerHTML); 
    }; 
} 
}; 

в вашем файле JavaScript

и HTML:

<html> 
<head> 
<title>SoundCloud API</title> 
<script src="http://connect.soundcloud.com/sdk.js"></script> 
<script src="test.js"></script> 

</head> 
<body> 
<ul> 
    <li><a href="#" class="genre">EDM</a></li> 
    <li><a href="#" class="genre">classical</a></li> 
    <li><a href="#" class="genre">soundtrack</a></li> 
</ul> 
<div id="target"></div> 
</body> 
</html> 

Этот учебник был сделан в 2012 году (это долго давным-давно), возможно, скрипт устарел или что-то в этом роде.

+0

Howdy, я попробовал это (буквально предупреждение прямо под закрытием}), и ничего не происходит pens ... – user3718365

+0

См. обновленный ответ. – issathink

+0

Что вы изменили? –

0

Вы должны загрузить все ваши файлы JavaScript в самом конце тела, непосредственно перед </body> тег. Это заставит JavaScript работать более предсказуемо и надежно и, вероятно, станет причиной этой проблемы. Есть очень мало обстоятельств, когда вы захотите, чтобы JavaScript был вызван в другом месте.

+0

Я изменил две строки