Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JS: setAttribute(name, param)

2.8K
06 августа 2006 года
Unglued
119 / / 15.09.2005
Создаю дискриптор IMG по средством DOM в JS, добавляя в него атрибуты:
[HTML]
var mess = document.getElementById("mes"); // дискриптор DIV
var sc = document.createElement("img");

sc.setAttribute("src", filePath);
sc.setAttribute("width", "170");
sc.setAttribute("height", "130");
sc.setAttribute("border", "1");
sc.setAttribute("onclick", "show();");
sc.setAttribute("style", "cursor: pointer;");
mess.appendChild(sc);
[/HTML]

Получаем:
[HTML]
<div id="mes">
<img src="/img/1.jpg" width="170" height="130" border="1" onclick="show();"/>
</div>
[/HTML]
Атрибут onclick почему-то не работает, а атрибут style не прописывается вовсе.
Никто не знает почему так?
15
06 августа 2006 года
shaelf
2.7K / / 04.05.2005
Попробуй не с setAttribute, а через
sc.src = ""
cs.name = ""
и т.д.
2.8K
06 августа 2006 года
Unglued
119 / / 15.09.2005
Спасибо. Таким способом я решил проблему с тегом style.
Но onclick пока все по старому.

На данном этапе это выглядит так:
[HTML]
var mess = document.getElementById("mes"); // дискриптор DIV
var sc = document.createElement("img");
sc.setAttribute("id", "myImg");
sc.setAttribute("src", filePath);
sc.setAttribute("width", "170");
sc.setAttribute("height", "130");
sc.setAttribute("border", "1");
mess.appendChild(sc);

var newImage = document.images["myImg"];
newImage.style.cursor = "pointer";
newImage.onсlick = "show('800','600','" + filePath + "');";
[/HTML]

Что-то надо делать с этим onClick. Еще идеи?
12
06 августа 2006 года
alekciy
3.0K / / 13.12.2005
1) Про экранирование кавычек ты конечно не слышал...
 
Код:
newImage.onсlick = "show(\'800\',\'600\',\'" + filePath + "\');";

2) DOM API полистай ;)
Вот так будет работать:
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Так вот...</title>
<script type="text/javascript">

function show() {
alert("Тут выполняется код функции show");
};

function fun() {
var filePath = 'image/img.gif';
var mess = document.getElementById("mes"); // дискриптор DIV
var sc = document.createElement("img");
sc.setAttribute("id", "myImg");
sc.setAttribute("src", 'file');
sc.setAttribute("width", "170");
sc.setAttribute("height", "130");
sc.setAttribute("border", "1");
var attr = "show(\'800\',\'600\',\'" + 'file' + "\')";
attr = "show()";
sc.setAttribute("onclick", attr);
sc.setAttribute("style", "cursor: pointer;");
mess.appendChild(sc);
}

function view() {
alert(document.getElementById("mes").innerHTML);
}

</script>
</head>

<body>

<div id="mes">
</div>
<input type="button" &#111;&#110;click="fun()" value="создать">
<input type="button" &#111;&#110;click="view()" value="показать">

</body>
</html>

Да и при наборе кода стоит быть более внимательным...
2.8K
06 августа 2006 года
Unglued
119 / / 15.09.2005
1) Экранирование кавычек здесь не нужно, т.к. одинарные кавычки вставлениы в двойные это раз, а во вторых и твой и мой пример отображаются одинакого правильно.

2) будешь смеяться, так тоже не работает.
И кстати при

attr = "show()";
sc.setAttribute("onclick", attr);

в img выглядит как onclick=show(), т.е нет кавычек, которые должны быть (XHTML).

В общем я, вроде, уже все перепробывал. Cдаваться, конечно, не собираюсь, но уже подхожу к мысли, что это обыкновенный баг JS.
2.8K
07 августа 2006 года
Unglued
119 / / 15.09.2005
УРА УРА УРА!!!!! Я нашел таки выход.

Всетаки с onClick действительно какой-то баг (подумал я)
А воспользуюсь ка я другим атрибутом (опять же подумал я)
[HTML]
var mess = document.getElementById("mes"); // дискриптор DIV
var href = document.createElement("a");
href.setAttribute("href", "java script: popup();");
var sc = document.createElement("img");
sc.setAttribute("id", "myImg");
sc.setAttribute("src", filePath);
sc.setAttribute("width", "170");
sc.setAttribute("height", "130");
sc.setAttribute("border", "1");
href.appendChild(sc);
mess.appendChild(href);

var newImage = document.images["myImg"];
newImage.style.cursor = "pointer";
[/HTML]

В итоге получил рабочую ссылку:
[HTML]
<a href="java script: popup();">
<img id="myImg" src="/img/1.jpg" width="170" height="130" border="1" />
</a>
[/HTML]

Спасибо alekciy и shaelf за пинки в сторону истины!
12
07 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE=Unglued]
2) будешь смеяться, так тоже не работает.
И кстати при
[/QUOTE]
Буду! У меня работает (Opera 9, FireFox 1.5, Avant 9, IE 6), у тебя нет? Стоит задуматься ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог