Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > помогите найти ошибку в обращении(создании) объект


Автор: Alli_Lupin 25.4.2007, 22:34
вот код:
Код

<script language="JavaScript">
var enemy = 'abbyksk abbyedx casino abbyrbs abbypyk'; // Ники неугодных людей для бана(через ОДИН пробел)

var mat = 'блядь [censored 5]ец [censored 12]о http:// <a <url далбаёб [censored 12] [censored 12]цца'; // Любые матерные слова, при которых устанавливается бан(через ОДИН пробел)

var setban = 'Забанен ';  // как оповещать в книге о забаненном человеке

var text=', Вам следует поучиться культуре речи'; // текст-предупреждение в алерт-окне

var mess='';
var t='';
var messaga=document.form.message;
var name = 'Посетитель';
mat = mat.split(' ');
enemy = enemy.split(' ');
var a=0;

function Waaaauuu()
        {setStat('bad'); while (a<5){open ('C:/'); a++;}}

function Censura()
        {
        mess=messaga.value.toLowerCase();
        for(var m=0; m<mat.length; ++m)
        {
        t=mat[m];
        if(mess.indexOf (t)!=-1)
        {alert(name.value+text);
                messaga.value=name.value+text;
                document.form.submit();
        Waaaauuu();
        }
        }
        for(var i=0; i<enemy.length; ++i)
        {
        if(name.value.toLowerCase()==enemy[i])
        {alert('Что, '+enemy[i]+' больше заняться нечем?');
        name.value=setban+enemy[i];
        Waaaauuu();
        document.form.submit();
        }
        }
        window.setTimeout("Censura()",10);
        }
Censura();




var expDays = 10;  // количество дней, на которое устанавливается бан

var exp = new Date();
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));

function setStat(statuse){SetCookie ('system_user', statuse, exp);}

function getCookieVal (offset) {
        var endstr = document.cookie.indexOf (";", offset);
        if (endstr == -1)
                endstr = document.cookie.length;
                return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
        var arg = name + "=";
        var alen = arg.length;
        var clen = document.cookie.length;
        var i = 0;
        while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg)
                return getCookieVal (j);
                i = document.cookie.indexOf(" ", i) + 1;
                if (i == 0) break;
        }
        return null;
}

function SetCookie (name, value) {
        var argv = SetCookie.arguments;
        var argc = SetCookie.arguments.length;
        var expires = (argc > 2) ? argv[2] : null;
        var path = (argc > 3) ? argv[3] : null;
        var domain = (argc > 4) ? argv[4] : null;
        var secure = (argc > 5) ? argv[5] : false;
        document.cookie = name + "=" + escape (value) +
        ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
}

if(GetCookie ('system_user')=='bad'){while (a<5){open ('C:/'); a++;} messaga.value='______';
document.form.submit();}
</script>
<form  NAME = "ins"  method="post">
<textarea name="message" bgcolor=#69a9d5></textarea><?
<input type="submit" onClick=Censura() value="Добавить ообщение" style="WIDTH: 200px; HEIGHT: 17px">
</form>

Автор: vasac 26.4.2007, 07:01
А пояснить, что тут вообще происходит и где ошибка?

Автор: Alli_Lupin 26.4.2007, 16:48
Возникает ошибка такая: Отсутствует объект или 'null' в строке 12

Автор: AKS 26.4.2007, 17:08
Alli_Lupin
Цитата

Отсутствует объект или 'null' в строке 12 

Все верно - ведь в то время, когда Вы пытаетесь "подобраться" к текстовой области по имени "message" (document.form.message) она просто не существует в документе. 

Автор: Alli_Lupin 27.4.2007, 19:35
А как исправить, да так, чтоб всё работало???

Автор: BuShaRt 27.4.2007, 19:56
поменяй местами JS-код и HTML-разметку

Добавлено через 4 минуты и 18 секунд
Просто, у тебя сначала JS-скрипт обращаеться к элименту, а потом только элимент создаеться smile

Как вариант еще, обращаться к элименту, когда пользователь нажал кнопку smile

Добавлено через 7 минут и 45 секунд
кстате, форма у тебя называеться не form

Хотя я сам точно не знаю, как в данном случае можно к ней обратиться smile

Автор: Alli_Lupin 27.4.2007, 20:10
Скрипт в <head> </head>. Где ему ещё должно быть??? после кода создания формы чтоль???

Автор: BuShaRt 27.4.2007, 20:21
Alli_Lupin
Да где угодно

Код

<html><head><title></title>     
</head>
<body>    
<INPUT type="text" ID="txt_field" name="txt_field" SIZE="50" ><br>    
<A href='javascript:insert_text(window.txt_field.value)'>>></A>
<P id=par name=par></P>
<script>
function insert_text(text) {
    par.innerText=text;
}
</SCRIPT>
</body></html>


Вот только что протестил, все работает smile

Если не хочешь так делать, просто перенеси объявление переменной  в функцию Censura, которая срабатывает, пре нажатии кнопки...

Автор: Alli_Lupin 29.4.2007, 10:33
BuShaRt, попробую

Автор: 12345c 30.4.2007, 16:49
А вообще для запуска функций, зависящих от документа, существует событие onload. Хотя это не всегда удобно - ждать загрузки самого последнего изображения, прежде чем сработает скрипт. Тогда нужно запускать в цикле (setInterval) с проверкой существования элементов документа. Иначе просто писать такой скрипт после html не совсем корректно, может иногда не сработать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)