Строка .replace() method
не обновляет строку, по которой вы ее вызываете, она возвращает новую строку - поэтому ваш alert(theHTML)
продолжает отображать исходную строку. Если вы сказали это:
theHTML = theHTML.replace("style=\"display:none;\"", "style=\"display:inline;\"")
Тогда alert(theHTML)
покажет замененную версию.
Тем не менее, это по-прежнему не повлияет на фактический элемент img, потому что это всего лишь манипулирование строковой переменной, которая не имеет связи с вашим элементом. Чтобы на самом деле сделать элемент img видимым, вам нужно заменить его новым элементом, сгенерированным из вашей строки, что создает трудности, или вы можете просто установить свойство display
напрямую:
$(this).css("display", "inline");
Также обратите внимание, что ваш исходный код сказал this.html()
- кажется маловероятным, что this
будет объектом jQuery, для которого вы можете вызвать метод jQuery .html()
, это скорее всего сам элемент DOM, в котором на случай, если вам нужно будет сказать $(this).html()
. Поэтому, если какой-либо из ответов не работает, это может быть связано с тем, как вы в первую очередь получаете ссылку this
на элемент img - может быть полезно, если вы обновите свой вопрос, чтобы показать это.
Обратите также внимание, что если идея заключается в том, чтобы элемент img появлялся в печатном виде, но не иначе, вы можете сделать это с помощью CSS:
@media all {
img.printOnly { display: none; }
}
@media print {
img.printOnly { display: inline; }
}
Предоставьте класс "printOnly" (или любое другое имя класса, которое вы хотите использовать) любым элементам, которые должны отображаться только для печати. Или укажите по идентификатору. Безотносительно.