2017-02-13 4 views
1

Здравствуйте, у меня есть проблема с моим кодом, когда я печатаю метод, который ничего не показывает. Метод не печатает, как следует. Я пытаюсь получить язык пользователя. Я хочу, чтобы каждый раз, когда он задавал вопрос, на каком языке вы говорите, он получит ответ, но в функции. Вместо этого я получаю код, а не язык.Array not printing called method

let questions = [ 
 
    {text:'What is your name?', audio:'music/openmind.ogg', response : input => 'Hello ' + input + '!' }, 
 
    {text:'How old are you?', response : input => 'That means you were born in ' + (2017 - input) + '.'}, 
 
    {text:'Where are you from?', audio:'music/beone.ogg', response: input => 'You are from ' + (input) + '.'}, 
 
    {text: 'Do you eat healthy?', audio: 'music/becoming.ogg', response: input => 'Acording to my data you are eating ' + (input) + ' and that is healthy!'}, 
 
    {text: 'What is your time?', audio: 'music/becoming.ogg', response: input => 'Where I am located' + (new Date().toLocaleTimeString()) + 'that is the day!'}, 
 
    {text: 'What language do you speak', audio: 'music/becoming.ogg', response: input => 'Acording to me you speak: ' + (language) + '!'} 
 
]; 
 

 
let output = $('#output'), 
 
    input = $("#input"), 
 
    curQuestion; 
 

 
function ask() { 
 
    let qi = Math.floor(Math.random() * questions.length); //depending on your needs, a check could be added if it's been asked directly before or only recycle questions when all are asked 
 
    curQuestion = questions[qi]; 
 
    setOutput(curQuestion.text); 
 
    input.val(''); 
 
} 
 

 
ask(); //first call 
 

 
function respond(){ 
 
    let q = curQuestion; 
 
    if(q.audio) 
 
    new Audio(q.audio).play(); 
 
    setOutput(q.response(input.val())); 
 
    setTimeout(ask, 5000); 
 
} 
 

 
function setOutput(txt){ 
 
    output.html($('<h1>').text(txt)); 
 
} 
 

 

 
$(document).keypress(function(e) { 
 
    if (e.which == 13) { 
 
    respond(); 
 
    return false; 
 
    } 
 
}); 
 

 
function language(){ 
 
    var userLang = navigator.language || navigator.userLanguage; 
 
    document.write (userLang); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="well"> 
 
     <div id="output"></div> 
 
    </div> 
 
    <div class="col-md-2 col-md-offset-5"> 
 
\t <div class="form-group"> 
 
\t  <label>Responce:</label> 
 
      <input type="text" class="form-control" id="input" value=""> 
 
\t </div> 
 
    </div> 
 
</div>

+1

https: // jsfiddle. net/823agL1y/ваш язык функций определен неправильно, он должен be language() –

+0

@VinodLouis Он просто печатает функцию, а не язык. – user6860260

+0

вам нужно вызвать язык функций() https://jsfiddle.net/823agL1y/2/ –

ответ

1

Вам просто нужно вызвать функцию языка:

{ 
    text: 'What language do you speak', 
    audio: 'music/becoming.ogg', 
    response: input => 'Acording to me you speak: ' + language() + '!' 
} 

И убедитесь, что вы вернетесь из language функции:

function language() { 
    var userLang = navigator.language || navigator.userLanguage; 
    return userLang; 
} 
+0

Спасибо, что это сработало! – user6860260