Запустить создание изображения из текста поля ввода - PullRequest
0 голосов
/ 12 мая 2011

Пользователь вводит слова в поле ввода, после нажатия кнопки «Перейти» в определенном месте иерархии появляются небольшие изображения с именами файлов, которые соответствуют ключевым словам. Я просто хотел, чтобы кто-то дважды проверил этот скрипт, чтобы увидеть, есть ли в нем ошибки, так как он не работает. Входные данные представляют собой разделенный запятыми список, отсюда и усечение.

$(".Go").live('click', function(){
    var words = [];
    jQuery.each(jQuery.trim(jQuery("#input").val()).split(","), function(index, value){
        words.push(jQuery.trim(value));
    });

    for(i=0; i > words.length(); i++){
        $('#Place').append('img').attr("src", words[i]+'.png');
    }
});

Спасибо Феми, который сформулировал этот сценарий для меня.

Ответы [ 3 ]

2 голосов
/ 12 мая 2011

Вот рабочая демонстрация с различными улучшениями.

Причины, по которым ваш код не работает:

  • i > words.length() всегда будет ложным, так как вы изначально устанавливаете его на 0, это должно быть <.

  • length - это свойство, а не функция,Снимите скобки.

  • Ваш синтаксис для добавления нового элемента img просто добавляет строку 'img'.Чтобы использовать append () для добавления нового элемента подобным образом, вам нужно использовать перегрузку, которая принимает функцию.

  • Не совсем ошибка, но там много ненужного кода.split() возвращает массив уже, так что циклический просмотр этого массива для помещения каждого элемента массива в другой массив является излишним.Также нет причин для добавления массива words перед его назначением.

  • Нет особой причины использовать live(), если вы не добавляете динамическиэлементы с классом go.Вместо этого вы можете просто использовать click().

РЕДАКТИРОВАТЬ:
В ответ на комментарии, вот как добавить изображения в два разных контейнера на основе слова .

РЕДАКТИРОВАТЬ 2:
и добавить изображение в другой контейнер в зависимости от того, является ли «слово» прописными, строчными, цифрами или символами (то есть: ни один из вышеперечисленных!)

1 голос
/ 12 мая 2011

Похоже, что условие имеет пару опечаток

i > words.length()

Это никогда не будет правдой, а length является собственностью. Должно быть:

for(i=0; i < words.length; i++)
0 голосов
/ 12 мая 2011

Да, там определенно опечатка.Вот хорошее руководство с исправленной опечаткой, которое поможет вам вместе с вашим сценарием: http://jsfiddle.net/vkSQy/

...