#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?