|
|
|
| Пытаюсь реализовать открытие и скрытие описания товара на js, описание открывается, но не стирается.
Доктайп:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
php переменная описания $sa[$i] где $i - номер товара
$fg - само описание, которое берется из базы
$sa[$ci] ="<span onclick=\'skr(".$i.")\'>/ Скрыть описание.. /<span/>".$fg;
$sa[$ci] = str_replace("\r\n"," ",$sa[$i]);
unset($fg);
|
Дальше js ф-ия skr() которая должна стирать описание
function skr(x)
{
document.getElementById("n"+x).innerHTML="";
}
|
Картинка, при клике по которой добавляется описание:
<img src="img/qw1.png" onclick="document.getElementById('n<?=$i;?>').innerHTML='<?=$sa[$i];?>'" alt="Описание" />
|
ну и собственно сам контейнер в который добавляется описание:
<div class="search-0">
<br />
<span class="zkr" id="n<?=$i;?>"></span>
</div>
|
Скажите пожалуйста, где тут ошибка может быть?
P.s. валидатор показывает валидность кода 100% | |
|
|
|
|
|
|
|
для: Blizard
(15.08.2011 в 14:20)
| | А вызов skr() вообще происходит? Добавьте туда alert(), у меня такое ощущение, что до него дело вообще не доходит. Лучше в onclick подставить функцию, которая отображает/скрывает текст... причем текст лучше хранили бы не отдельно, а прямо в тэге <span></span>, манипулируя не его содержимым, а его видимостью через каскадные таблицы стилей. У вас бы система вся упростилась бы, приобрела наглядность и стабильность. | |
|
|
|
|
|
|
|
для: cheops
(15.08.2011 в 14:45)
| | если через css делать видимость/невидимость блока, то мне придется всю страницу полностью переписать... да и по коду меньше, когда текст в php
alert() я уже ставил, но не доходит до него дело... | |
|
|
|
|
|
|
|
для: Blizard
(15.08.2011 в 14:57)
| | По коду абсолютно так же, какая разница где текст у вас хранится в JS или в структуре документа (последнее даже лучше для поисковых роботов - они JS разбирать не будут). Страницы переделывать не нужно, вы же имеете возможность менять стили через JS, просто меняйте статус style.display и все. | |
|
|
|
|
|
|
|
для: cheops
(15.08.2011 в 15:06)
| | Согласен, но как раз эта страница от роботов закрыта, потому что дублируется контент.
я нашел причину ошибки, но не могу понять из-за чего это стало причиной
вобщем вот полностью js на этой странице такой
<script type="text/javascript">
function skr(x)
{
document.getElementById("n"+x).innerHTML="";
}
function al()
{
alert("Для того, чтобы заказывать товар, вам необходимо зайти в личный кабинет. \r\n \r\n Если вы еще не зарегистрированы, то пожалуйста, зарегистрируйтесь!");
}
function alf()
{
alert("Дождитесь выполнения вашего прошлого заказа!");
}
function getXmlHttp(){
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function vote(h,t,v) {
var req = getXmlHttp()
req.onreadystatechange = function() {
if (req.readyState == 4) {
if(req.status == 200) {
var tm = req.responseText.split("^");
if (tm[0] == 1)
{
document.getElementById("to"+tm[1]).innerHTML = "<span class=\'nst\'>товар добавлен в корзину</span>";
}
if (tm[0] == 2)
{
document.getElementById("to"+tm[1]).innerHTML = "<span class=\'nst\'>дождитесь выполнения вашего прошлого заказа!</span>";
}
}
}
}
req.open('GET', 'vote.php?tovarid='+h+'&vkus='+v+'&userid='+t, true);
req.send(null);
}
</script>
|
когда убираю код ajaxa то все начинает работать... | |
|
|
|
|
|
|
|
для: Blizard
(15.08.2011 в 15:12)
| | Вы когда при помощи JS добавляете на страницу JS-код, у вас не регистрируется обработчик, лучше обработчик назначать явно в JS-коде, присваивая имя функции onclick объекта, который вы получаете при помощи document.getElementById(). | |
|
|
|
|
|
|
|
для: cheops
(15.08.2011 в 15:17)
| | Так не получится, я же не могу переменной php присвоить значение js
Я так понял вы имеете ввиду заменить
<img src="img/qw1.png" onclick="document.getElementById('n<?=$i;?>').innerHTML='<?=$sa[$i];?>'" alt="Описание" />
|
на
<img src="img/qw1.png" onclick="add('<?=$i;?>')" alt="Описание" />
|
и потом в js сделать
function add(y)
{
document.getElementById('n'+y).innerHTML='<?=$sa[(вот тут как впихнуть y ?)];?>';
}
|
или в пхп цикле сделать присвоение всех описаний переменным js?
Или я вас всётаки не так понял? ))) | |
|
|
|
|
|
|
|
для: Blizard
(15.08.2011 в 15:32)
| | >Так не получится, я же не могу переменной php присвоить значение js
Почем нет? AJAX вы разве для другой какой-то цели используете? | |
|
|
|
|
|
|
|
для: cheops
(15.08.2011 в 16:12)
| | для этой конечно... но вобщем проблему решил, я когда HTML правил под XHTML то в ajaxe случайно && заменил на && отсюда всё и пошло, но валидатор опять начал ругаться:
character "&" is the first character of a delimiter but occurred as data
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
This message may appear in several cases:
You tried to include the "<" character in your page: you should escape it as "<"
You used an unescaped ampersand "&": this may be valid in some contexts, but it is recommended to use "&", which is always safe.
Another possibility is that you forgot to close quotes in a previous tag.
|
ну да ладно, всё равно страница закрыта в robots.txt
cheops, спасибо за помощь! | |
|
|
|