#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
Я использую этот javascript, чтобы заставить изображения прокручиваться вертикально снизу вверх, но я не могу понять, как заставить изображения начинать прокрутку, когда рамка заполнена. Прямо сейчас он пуст, когда загружается сайт / скрипт, и я хотел бы это изменить.
Спасибо! (Прошу прощения за длинный код)
Вот код:
<script>
step = 1
nextMessage = 1
counter = 20;
function initTSV1() {
tsvDisplay = document.getElementById("tsvcont")
for (var i = 0; i < 2; i ) {
newDiv = document.createElement("DIV")
newDiv.setAttribute("id", "tsvdiv" i)
/*newDiv.onmouseover=function(){
clearTimeout(timer);
counter = 40;
}
newDiv.onmouseout=function(){
counter = 20;
scrollTSV1();
}*/
newDiv.style.position = "absolute"
newDiv.style.padding = "0 5 0 10" // top right bottom left
tsvDisplay.appendChild(newDiv)
}
tsvDv0 = document.getElementById("tsvdiv0")
tsvDv1 = document.getElementById("tsvdiv1")
tsvDv0.innerHTML = info[0]
tsvDv1.innerHTML = info[1]
tsvDv0.style.top = tsvDisplay.offsetHeight
tsvDv1.style.top = tsvDisplay.offsetHeight tsvDv0.offsetHeight "px"
scrollTSV1()
}
function scrollTSV1() {
/*$("#tsvcont").mouseover(function() {
counter = 40;
}).mouseout(function() {
counter = 20;
});*/
$("#tsvcont").mouseout(function() {
counter = 20;
}).mouseover(function() {
counter = 40;
});
tsvDv0Pos = parseInt(tsvDv0.style.top)
tsvDv1Pos = parseInt(tsvDv1.style.top)
tsvDv0Pos -= step
tsvDv1Pos -= step
tsvDv0.style.top = tsvDv0Pos "px"
tsvDv1.style.top = tsvDv1Pos "px"
if (tsvDv0Pos < -tsvDv0.offsetHeight) {
nextMessage
if (nextMessage == info.length) {
nextMessage = 0
}
tsvDv0.innerHTML = info[nextMessage]
if (tsvDv1.offsetHeight < tsvDisplay.offsetHeight) {
if (tsvDv1.offsetTop < tsvDisplay.offsetHeight - tsvDv1.offsetHeight) {
tsvDv0.style.top = tsvDisplay.offsetHeight "px"
}
else {
tsvDv0.style.top = tsvDv1.offsetTop tsvDv1.offsetHeight "px"
}
}
else {
tsvDv0.style.top = tsvDv1.offsetTop tsvDv1.offsetHeight "px"
}
}
if (tsvDv1Pos < -tsvDv1.offsetHeight) {
nextMessage
if (nextMessage == info.length) {
nextMessage = 0
}
tsvDv1.innerHTML = info[nextMessage]
if (tsvDv0.offsetHeight < tsvDisplay.offsetHeight) {
if (tsvDv0.offsetTop < tsvDisplay.offsetHeight - tsvDv0.offsetHeight) {
tsvDv1.style.top = tsvDisplay.offsetHeight "px"
}
else {
tsvDv1.style.top = tsvDv0.offsetTop tsvDv0.offsetHeight "px"
}
}
else {
tsvDv1.style.top = tsvDv0.offsetTop tsvDv0.offsetHeight "px"
}
}
timer = setTimeout("scrollTSV1()", counter);
}
// add onload="initTSV1()" to the opening BODY tag
</script>
<style>
#tsvcont{
position:relative;
width:290px; /* width = target width - (border * 2) */
height:500px;
overflow:hidden;
text-align:left;
}
#tsvdiv0 {
position:absolute;
width:290px; /* width = tsvcont width - ((border padding) * 2) */
padding:0px 0px 30px 0px;
height:600px;
}
#tsvdiv1{
position:relative;
width:290px; /* width = tsvcont width - ((border padding) * 2) */
padding:30px 5 0px 5;
height:600px;
}
</style>
</HEAD>
<BODY onLoad="initTSV1()">
<DIV id="tsvcont" style="position:relative; width:290px; height:500px; overflow:hidden; text-align:left; left: 50px";></DIV>
Комментарии:
1. в stack вам следует выбрать один ответ на ваши вопросы, поскольку
accepted
таким образом, в будущих вопросах люди будут более склонны помогать ^_^2. Спасибо, чувак 🙂 Я сделал это сейчас 🙂
Ответ №1:
вместо размещения функции в теле выгружается, поскольку вы используете jQuery
попробуйте это:
$(function(){
initTSV1();
});
поместите это куда-нибудь в скрипт
Комментарии:
1. Я не совсем понимаю, куда это поместить, поскольку уже есть функция <code> initTSV1(){ tsvDisplay=document.getElementById(«tsvcont»)</ code> Не могли бы вы объяснить это немного подробнее, пожалуйста? 🙂 Спасибо
2. Код Нила — это вызов
function initTSV1()
функции. IIRC,$(function(){...}
это в основном сокращение отdocument.ready()
. Другими словами, он вызываетсяinitTSV1()
после того, как страница полностью загружена и готова к работе.3. Спасибо, Шона, но я все еще не знаю, куда поместить код. Я не знаком с jquery. Должен ли я вызывать код с помощью <script type=»javascript»> $(function(){ initTSV1(); }); </script> или я должен поместить это в функцию come somewhere?
4. @Jaoza — Вы можете поместить это в свой собственный тег script, если хотите (хотя я бы ограничил это действительно простыми вещами, эта функция может стать действительно длинной, действительно быстрой, если у вас много JS). Обычно у меня есть файл master .js, в котором хранится большая часть моих пользовательских материалов, и я помещаю его в начало.
5. @Shauna спасибо за вашу помощь, но я должен попросить вас объяснить подробнее, поскольку я не знаю точно, где мы сейчас находимся 🙂 Итак, исходный код (длинный код, с которого я начал этот поток), что с ним нужно сделать? Достаточно ли, если я добавлю код, который Нил написал в начале скрипта, или мне следует что-то заменить? Я действительно не понимаю, так как я действительно не понимаю, как работает скрипт. Спасибо за понимание.