Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Задачка (Проверка на спам) (https://javascript.ru/forum/dom-window/52780-zadachka-proverka-na-spam.html)

soltx 06.01.2015 17:01

Задачка (Проверка на спам)
 
Привет, не могу отловить ошибку :)
"use strict";
var str = prompt('Введите значение');
str = str.toLowerCase;
function checkSpam(str){
    if(str.indexOf('viagra') >= 0 || str.indexOf('xxx') >= 0){
       alert('true');
    }else{
    alert('false');  
    }
}
checkSpam(str);


В консоли наблюдаю: Uncaught TypeError: undefined is not a function

Ошибка у меня здесь if(str.indexOf('viagra') >= 0 || str.indexOf('xxx') >= 0)
что сделал не правильно?

ruslan_mart 06.01.2015 17:10

soltx, не вижу ошибки, может русская буква где-нибудь?

Safort 06.01.2015 17:15

Скобки забыл у вызова метода toLowerCase.

"use strict";
var str = prompt('Введите значение');
str = str.toLowerCase();
function checkSpam(str){
    if(str.indexOf('viagra') >= 0 || str.indexOf('xxx') >= 0){
       alert('true');
    }else{
    alert('false'); 
    }
}
checkSpam(str);

ruslan_mart 06.01.2015 17:17

Safort, а ошибка у автора показывается в строке условия. :p

soltx 06.01.2015 17:20

Ruslan_xDD, переписал по новой, + редактор (JetBrains) показывает если где то русская буква, в примере выше, запустить выдаст ошибку undefined is not a function

krutoy 06.01.2015 17:22

<!DOCTYPE html>
<html>
<head>
</head>
<body>




<script>

var str = prompt('Введите значение');
str = str.toLowerCase();
function checkSpam(str){
    if(/viagra/.test(str) || /xxx/.test(str)){
       alert('true');
    }else{
    alert('false'); 
    }
}
checkSpam(str);
</script>
</body>
</html>

ruslan_mart 06.01.2015 17:23

soltx, вообще я очень сомневаюсь, что спамеры юзают javascript, так как они в основном боты и сразу отправляют запрос на сервер. Лучше на сервере делать подобные проверки.

soltx 06.01.2015 17:23

Safort, спс, какой не жданчик в действительности у метода не добавил скобки.

krutoy 06.01.2015 17:23

Ruslan_xDD,
Цитата:

а ошибка у автора показывается в строке условия
так и должно быть

krutoy 06.01.2015 17:37

Ruslan_xDD,
Что касаемо предыдущего твоего вопроса, то там в отсутствии скобок нет никакой ошибки, просто тс вызывал indexOf для функции toLowerCase

ruslan_mart 06.01.2015 17:40

Цитата:

Сообщение от krutoy
для функции toLowerCase

Это то понятно. А вообще, должна возникать ошибка, потому что такое действие не логично: str.toLowerCase, так как метод и не вызывается, и не присваевается. В каких-то языках бы это считалось за ошибку, но не помню в каких именно.

Safort 06.01.2015 17:47

Ruslan_xDD,
Цитата:

А вообще, должна возникать ошибка, потому что такое действие не логично: str.toLowerCase, так как метод и не вызывается, и не присваевается.
Вообще-то, всё логично. Переменной str присваивается ссылка на str.toLowerCase. Вспомни, как ты работаешь с теми же таймерами в JS или событиями.


Часовой пояс GMT +3, время: 22:32.