Не удается установить видимость: скрыто с помощью JavaScript

#javascript #image #getelementbyid

#javascript #изображение #getelementbyid

Вопрос:

У меня возникли небольшие проблемы с пониманием этой вещи, поэтому я подумал, что это могло бы помочь опубликовать его здесь. Итак, вот оно.

Что у меня есть: 5 разных изображений в 5 разных ячейках таблицы скрипт, который я опубликую ниже.

Что я хочу: использовать javascript…

 document.GetElementById("image ID").style.visibility='visible/hidden'
  

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

 var n=1;
function picID() {    
pictureID="pic" n;
n=n 1;
}
  

… и таким образом, при каждом вызове этой функции мы получаем идентификатор элемента « pic1 «, « pic2 «, « pic3 » и т.д.

В чем моя проблема: эта чертова штука не будет работать. Стиль изображения остается таким же, как я определил его в теге img. ( style="visibility:hidden" )

Все идентификаторы изображения находятся в теге img, как и должно быть.

Вот весь код:

 <script>
var m=1;
        function Show() {
        if (m==6) {m=1;}

    feat="feat" m;
        **document.getElementById(feat).style.visibility="visible";**
    m=m 1;
    setTimeout('Show()', 3000);
    }
window.onload = Show;
</script>

<script>
var k=1;    
    function Hide() {
    if (k==6) {k=1;}

    feate="feat" k;
        **document.getElementById(feate).style.visibility="hidden";**
    k=k 1;
    setTimeout('Hide()', 3000);     
    }

window.onload = Hide;
</script>
  

Я разделил код, чтобы его было легче обнаружить.
Из того, что я видел, единственной проблемой является жирная строка в коде. Я протестировал все остальное, заменив document.getElementById на document.write , поэтому я вижу, что пользовательская строка идентификатора работает нормально. Это. И все остальное тоже.

Есть предложения? Спасибо.

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

1. Вы переопределяете onload функцию Show функцией Hide…

2. Это не связано, но вы должны передавать функции setTimeout , а не строки. setTimeout(Show, 3000); и setTimeout(Hide, 3000); .

Ответ №1:

Попробуйте установить k = 0; вместо k = 1;

Похоже, что при загрузке страницы у вас есть функции show () и hide (), работающие на одном и том же элементе. Выполнение вышеуказанного приведет к запуску функции hide () для элемента ПЕРЕД элементом, на котором выполняется функция show().

Ответ №2:

Этот код будет продолжать выполняться в цикле. потому что setTimeout() вызывается каждый раз. Должен быть случай, когда оно не вызывается, например, если m<6 вызывает его, иначе не