Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2008, 19:11
Новичок на форуме
Отправить личное сообщение для maxonline Посмотреть профиль Найти все сообщения от maxonline
 
Регистрация: 04.09.2008
Сообщений: 2

Помогите! Почему в Opera js-код работает с ошибкой. В IE все нормально.
Спецы JS помогите разобраться в чем проблема!
На странице есть ссылка, вида:
<a href="javascript:void(0)" onclick="print_kvitok(); return false;" target="_self">Открыть для печати в новом окне</a>
.
Функция , которая вызывается по клику:
function print_kvitok(){
kvit = window.open("","kvitokwin", "fullscreen=no,status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=yes,resizable=yes,directories=no,location=no,width=710,height=600");
with (kvit.document) {
kvitan=document.getElementById('kvitok').innerHTML;
open('text/html');
writeln('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
writeln('<html xmlns="http://www.w3.org/1999/xhtml">');
writeln('<html>');
writeln('<head>');
writeln('<title>Банковский перевод</title>');
writeln('<link rel="stylesheet" href="/style.css">');
writeln('</head>');
writeln('<style type="text/css">');
writeln('H1 {font-size: 12pt;}');
writeln('p, ul, ol, h1 {margin-top:6px; margin-bottom:6px}'); 
writeln('td {font-size: 9pt;}');
writeln('small {font-size: 7pt;}');
writeln('body {font-size: 10pt;}');
writeln('</style>');
writeln('<body style="margin:2px;" marginheight=0 marginwidth=0 bgcolor="#ffffff" link="black" vlink="#a0a0a0" alink="#fa0055">');
writeln('<table align="center" width="90%" cellspacing="2" cellpadding="2" border="0"><tr>');
writeln('<td valign="top" height="90%" colspan="2">');
writeln(kvitan);
writeln('</td></tr>');
writeln('<tr><td align="right"><a href="javascript:void(0)" onClick="window.close()">Закрыть окно</a> </td>');
writeln('<td align="left"> <a href="javascript:void(0)" onClick="window.print(); return false">Печать квитанции</a></td></tr></table>');
writeln('</body>');
writeln('</html>');
close();
}}

Открывается новое окно в котором должна появиться квитанция.
На самой HTML странице есть DIV:
<div id=kvitok...
, в котором заключен HTML-код самой квитанции. В IE все работает отлично - открывается новое окно, в нем выводится квитанция. В Opera окно новое открывется, но оно совершенно пустое. В Error Console Оперы следующее сообщение.
JavaScript - [url]http://www.hs-market.ru/index.php/shop?page=account.order_details&order_id=6&vmcchk=1[/url]
Event thread: click
Error:
name: TypeError
message: Statement on line 6: Cannot convert undefined or null to Object
Backtrace:
  Line 6 of inline#4 script in [url]http://www.hs-market.ru/index.php/shop?page=account.order_details&order_id=6&vmcchk=1:[/url] In function print_kvitok
    var kvitan=document.getElementById('kvitok').innerHTML;


Что не правильно в коде? Помогите разобраться.
Ответить с цитированием
  #2 (permalink)  
Старый 04.09.2008, 20:22
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

ну так вынеси эту строку из with
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2008, 22:12
Новичок на форуме
Отправить личное сообщение для maxonline Посмотреть профиль Найти все сообщения от maxonline
 
Регистрация: 04.09.2008
Сообщений: 2

Спасибо, ZoNT! Все заработало!
Ответить с цитированием
  #4 (permalink)  
Старый 21.11.2008, 12:22
Mupok
 
Сообщений: n/a

Сообщение от ZoNT Посмотреть сообщение
ну так вынеси эту строку из with
У меня тоже такая проблема. Я так понял нужно что то сделать с 6 строкой в JS, тока вот не понял что значит вынести строку из with. Объясните пожалуйста.
Ответить с цитированием
  #5 (permalink)  
Старый 21.11.2008, 12:39
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

вынести - значит убрать из with и (в данном случае) написать перед with.
Почему? Потому что:
var kvitan=document.getElementById('kvitok').innerHTML ;
Мы обращаемся к document, а в with определён kvit.document, то есть фактически мы пытаемся обратится к kvit.document.document.getElementById('kvitok').in nerHTML
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск