2016-05-27 1 views
1

Я пытаюсь использовать функцию как строку прямо сейчас, и не кажется, что это возможно. Чтобы дать вам пример того, что я имею в виду, посмотрите на файл ниже:Как использовать функцию в виде строки?


<!DOCTYPE html> 
<html> 
<title>Test Webpage</title> 
<div id = "storyDisplay"></div> 
<script> 
var story = []; 
var dangerElements = ["test1","test2","test3"]; 
function danger() { 
    story.push(dangerElements[Math.round(Math.random()*dangerElements.length)]; 
    document.getElementById("storyDisplay").innerHTML = story.join(""); 
} 

</script> 
</html> 

Теперь, когда я пытаюсь ввести этот код он выходит как:



В принципе, выхода нет. Я проверил файл и не похоже, что есть синтаксическая ошибка, так что происходит?

[РЕДАКТИРОВАТЬ] Извините, прошу прощения забыли добавить в эту часть. Я хочу использовать опасность() следующим образом:

var genStory = [danger()]; 

и я хочу, чтобы он выводился как случайная строка в истории.

+5

Я вижу ошибку синтаксиса. Откройте консоль (нажмите F12 на Windows или Opt + Cmd + I на Mac), и он скажет вам, что это такое. Слово мудрому: правильно отрисуйте свой код. Это облегчит процесс отладки * в будущем. –

+1

Кроме того, вы должны использовать 'Math.floor' не' Math.round' при вычислении случайного элемента в таком массиве. 'Math.round' будет иногда давать вам ошибку за пределами границ, когда она округляет * вверх * за пределы диапазона массива. – jered

+1

Что означает «использовать функцию как строку»? Вы просто пытаетесь вызвать функцию, а не использовать ее как нечто особенное. – Barmar

ответ

0

Это то, что вы после этого?

var genStory = [(danger)()]; 
 
alert(genStory);
<!DOCTYPE html> 
 
<html> 
 
<title>Test Webpage</title> 
 
<div id = "storyDisplay"></div> 
 
<script> 
 
var story = []; 
 
var dangerElements = ["test1","test2","test3"]; 
 
function danger() { 
 
    story.push(dangerElements[Math.round(Math.random()*dangerElements.length)]); 
 
    return document.getElementById("storyDisplay").innerHTML = story.join(""); 
 
} 
 

 
</script> 
 
</html>

0

Вы просто не нашли квадратную скобку и закрывающая скобка в строке 9

story.push(dangerElements[Math.round(Math.random()*dangerElements.length)]); 
+0

Я установил квадратные скобки, но он все еще не работает. –