Javascript Foreach читает только 1 строку

#javascript

#javascript

Вопрос:

Когда я пытаюсь заставить SpeechModule отображать цикл foreach, преобразование текста в речь считывает только первую часть, а затем останавливается.

 function SpeechModule(var1)
{
   const TxtToSpeech = new SpeechSynthesisUtterance();
    let voices = speechSynthesis.getVoices();
    let search = document.getElementById("data").innerHTML;

    TxtToSpeech.text = search;
   
    TxtToSpeech.volume = 2;
    TxtToSpeech.rate = 0.5;
    TxtToSpeech.pitch = 2;
   
    TxtToSpeech.voice = voices[4];
   
    window.speechSynthesis.speak(TxtToSpeech);

}

  
     <?php foreach($JSON as $file): ?>
    
   <div id="data">
      
    <p> <?php echo $display->firstname; ?> </p>
    <p> <?php echo $display->lastname; ?> </p>    
</div>    
    
    <?php endforeach; ?>
  

Ответ №1:

 <?php 

$index=1;

foreach($JSON as $file): ?>
    
<div id="text<?php echo $index; ?>">
      
    <h1> Title: <?php echo $display->title; ?> </h1>
    <h2> First Name: <?php echo $display->firstname; ?> </h2>    
</div>    
    
    <?php 
$index  ;

endforeach; ?>



function TextToSpeech(var1)
{
   const speech = new SpeechSynthesisUtterance();
    let voices = speechSynthesis.getVoices();
    let convert = document.getElementById("text"   var1).innerHTML;

    speech.text = convert;
   
    speech.volume = 1;
    speech.rate = 1;
    speech.pitch = 1;
   
    speech.voice = voices[1];
   
    window.speechSynthesis.speak(speech);

}

  

После приведенных выше изменений, пожалуйста, напишите программу для последовательного запуска TextToSpeech(1), TextToSpeech(2), TextToSpeech(3). (вы можете использовать цикл от 1 до $index).

Ответ №2:

Из ваших кодов я полагаю, что идентификатор div (с именем «текст») будет отображаться более одного раза.

Если это так, система не сможет определить, на какой div вы ссылаетесь в своей функции TextToSpeech (или, если это возможно, она обработает только первый)

Комментарии:

1. Это имеет смысл, но есть ли способ, чтобы функция «text» считывала весь цикл foreach?