Разграничение четырех вложенных элементов в Javascript / Html

StackOverflow https://stackoverflow.com/questions/1414160

  •  06-07-2019
  •  | 
  •  

Вопрос

Ладно, это меня бесконечно расстраивает.Недавно я закодировал страницу на JS для своего приятеля, который хочет показать семье свадебные фотографии, чтобы узнать, какие из них они хотели бы приобрести.

Я использовал цикл for для подсчета 1-904:

for (beginnum=1;beginnum<=904;beginnum++) { yada yada...

Затем я использовал Adobe bridge, чтобы переименовать файлы камеры в 1-904 и их миниатюры (1-904 + _thumb) и использовал номер цикла для отображения 904 пробелов в изображении и правильно пронумерованного изображения:

[примечание: использование <) вместо обычного открытого тега, поскольку сайт не будет его отображать]

Т. е...

document.write(beginnum + ":" + "<img src='pictures" + beginnum + "_thumb.jpg' />");

Опера...

document.write("<div>" + beginnum + ":" + "<img src='pictures" + beginnum + "_thumb.jpg' /></div>")

Все это отлично работает в IE и Opera (с внешним CSS, изменяющим div, чтобы не было разрыва строки).

Затем я создал функцию для вызова увеличенной версии изображения при нажатии на нее.

Проблема в том, что когда я пытаюсь встроить эту функцию в сгенерированный JavaScript HTML, мне понадобятся четыре разделителя.Я слышал "' или """ или числовое значение &+;в некоторых случаях работаю третьим и четвертым, но, похоже, я не могу заставить их работать...где я сталкиваюсь с проблемой, так это здесь...

[примечание: снова используя <) для открытого тега]

document.write("<a href='javascript:void(0); onClick=

Поскольку я уже израсходовал " и ' Теперь мне больше нечего использовать для вызова функции при нажатии на картинку.

Обычно я не прошу ни о какой помощи, но на этот раз я не могу придумать ничего другого, что могло бы сработать...Я предполагаю, что, возможно, использование JS для генерации HTML оставляет мне ТОЛЬКО 2 разделителя, которые будут распознаны браузером, но я не уверен, кто-нибудь знает наверняка?Есть какие-нибудь исправления, о которых кто-нибудь может подумать?

Спасибо, ~Z~

Это было полезно?

Решение

Может быть, это сработает

for (i=0; i<904;i++)
{
    document.write("<div class=\"DivClassName\"><img src=\"pictures_" + i + "thumb.jpg\" onclick=\"OpenAWindowAndDisplayTheBigPhoto(" + i + ")\"></div>");
}

Другой подход:Предположим, вы поместили все в <DIV id="mainDIV">

var mainDIV = document.getElementByID("mainDIV");
var div, img, a;
for (i=0; i<904; i++)
{
   div = document.createElement("DIV");
   div.className = "DivClassName";
   a = document.createElement("A");
   a.href = "javascript:void(0)";
   a.onclick = function() {OpenAWindowAndDisplayTheBigPhoto(i);};
   img = document.createElement("IMG");
   img.src = "pictures_" + i + "thumb.jpg";
   mainDIV.appendChild(div);
   div.appendChild(a);
   a.appendChild(img);   
};

Другие советы

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

Всякий раз, когда что-то становится слишком запутанным, просто выполняйте по одной части за раз.

var s;

s = "'Hello.' ";
s += '"I must be going."';

Не видя кода, трудно сказать наверняка, но вы можете захотеть больше воспользоваться тем фактом, что javascript - это первоклассный язык, поэтому вы можете создавать функции и передавать их в качестве аргументов другим функциям или заставлять функции возвращать функции.

Делая это, вы можете преобразовать свою страницу во что-то, что звучит немного более управляемо.

Кроме того, воспользуйтесь событием onclick.

Вы должны быть в состоянии упростить javascript и таким образом избежать этой проблемы, IMO.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top