Очаква се „,“ или „{“, но е намерена грешка „[селектор]“.

Получаване на грешка „Очаква се“ или „{“, но е намерено „#44559“. Моят код изглежда така:

var valueid = $("div#center-box div#empid-textbox input").val(); //valueid=44559
if($("div#esd-names li#" + valueid).length > 0){
   //DO SOMETHING;
};

Получавам стойността на това, което е въведено в полето за въвеждане на текстово поле, което в случая е „44559“, изглежда не мога да разбера защо получавам тази грешка.

Извиквам моята функция за извличане на valueid със следния код. След като натиснете ENTER в конкретно текстово поле, стойността на текстовото поле се извлича и се проверява срещу елементи от списъка, за да се види дали съществува...ако съществува -- //НАПРАВЕТЕ НЕЩО//

$("div#center-box div#empid-textbox input.id").keypress(function(e){
  key = e.which;
  if(key===13){
    valueid = $("div#center-box div#empid-textbox input").val();
    if($("div#esd-names li[class*='" + valueid + "']").length > 0){
       //DO SOMETHING;
    };
  };
});

person sadmicrowave    schedule 14.04.2010    source източник


Отговори (3)


Използвате номер като идентификатор. Това не е позволено.

person kgiannakakis    schedule 14.04.2010
comment
когато го използвам като клас вместо това, получавам същата грешка, освен че казва ... но намерено "0.44559" - person sadmicrowave; 14.04.2010
comment
@sadmicrowave: Това би било, защото .44559 се интерпретира като число с плаваща запетая с 0 като цяло число. Ще откриете, че същото е вярно в много езици за програмиране. - person Samir Talwar; 14.04.2010
comment
но числото е само 44559 (без десетична запетая) -- не .44559 -- по някаква причина firefox добавя префикс от 0. към моя номер сам. някакви препоръки? - person sadmicrowave; 14.04.2010
comment
Селекторът на класа използва . преди името на класа (т.е. '.class-name'). Ще трябва да добавите буква или може би _ в началото на номера си. - person Mike Park; 14.04.2010
comment
@climbage - добавих _ към името на класа си и това изглежда работи.... можете ли да ми обясните защо това работи и защо имах проблем на първо място? - person sadmicrowave; 14.04.2010
comment
Това е както kgiannakakis каза -- идентификатор (или име на клас), започващ с число, не е валиден и ще накара анализатора да го прочете като число, а не като идентификационен низ. Ето повече за именуването на променливи: codelifter.com/main/tips/tip_020.shtml - person Mike Park; 15.04.2010

Поставете числото в атрибут rel и проверете за това $("div#esd-names li[rel=" + valueid + "]")

person Aaron Mc Adam    schedule 14.04.2010
comment
Когато направя това, получавам грешка на firefox, казваща: Очакван идентификатор или низ за стойността в селектора на атрибути, но намерен „44559“ - person sadmicrowave; 14.04.2010

Какво се опитваш да провериш? ако елементът от списъка съществува?

*/********* РЕДАКТИРАНО **********/*

Опитах се да го пресъздам, така че това е, което имам:

HTML:

<div id="center-box">
            <div id="empid-textbox">
                <input type="text" class="id" />
            </div> 
        </div>
        <div id="esd-names">
            <ul>
                <li class="1">John Doe</li>
                <li class="2">Jane Doe</li>
                <li class="4">John Smith</li>
                <li class="8">Jane Smith</li>
            </ul>
        </div>

javascript:

$(document).ready(function()
{
                $("div#center-box div#empid-textbox input.id").keypress(function(e)
                {
                    key = e.which;
                    if (key === 13)
                    {
                        valueid = $("div#center-box div#empid-textbox input").val();

                        /*this is the only thing I changed*/
                        if ($("div#esd-names li[class*='" + valueid + "']") != null)
                        {
                            //DO SOMETHING;
                            $("div#esd-names li[class*='" + valueid + "']").css("background-color", "red");
                        }
                    }
                });
}

И подчертава правилния li всеки път .. надявам се, че можете да използвате това .. съжалявам, ако не бях от полза.

person drusnov    schedule 14.04.2010
comment

Актуализация: Като се има предвид, че тази публикация е доста стара и през това време модифицирах тази помощна програма много за собствена употреба, реших, че трябва да публикувам нова версия. Най-новият ми код може да бъде намерен в The MathWorks File Exchange: dirPlus.m. Можете също да получите източника от GitHub.

Направих редица подобрения. Сега ви дава опции да добавите пред пълния път или да върнете само името на файла (включено от Doresoom и Oz Radiano) и приложете редовно шаблон на израз към имената на файловете (включен от Питър Д). Освен това добавих възможност за прилагане на функция за валидиране към всеки файл, което ви позволява да ги изберете въз основа на критерии, различни от техните имена (т.е. размер на файла, съдържание, дата на създаване и т.н.).


ЗАБЕЛЕЖКА: В по-новите версии на MATLAB (R2016b и по-нови), dir функцията има рекурсивни възможности за търсене! Така че можете да направите това, за да получите списък с всички *.m файлове във всички подпапки на текущата папка:

dirData = dir('**/*.m');

Стар код: (за потомство)

Ето функция, която търси рекурсивно във всички поддиректории на дадена директория, събирайки списък с всички имена на файлове, които намира:

function fileList = getAllFiles(dirName)

  dirData = dir(dirName);      %# Get the data for the current directory
  dirIndex = [dirData.isdir];  %# Find the index for directories
  fileList = {dirData(~dirIndex).name}';  %'# Get a list of the files
  if ~isempty(fileList)
    fileList = cellfun(@(x) fullfile(dirName,x),...  %# Prepend path to files
                       fileList,'UniformOutput',false);
  end
  subDirs = {dirData(dirIndex).name};  %# Get a list of the subdirectories
  validIndex = ~ismember(subDirs,{'.','..'});  %# Find index of subdirectories
                                               %#   that are not '.' or '..'
  for iDir = find(validIndex)                  %# Loop over valid subdirectories
    nextDir = fullfile(dirName,subDirs{iDir});    %# Get the subdirectory path
    fileList = [fileList; getAllFiles(nextDir)];  %# Recursively call getAllFiles
  end

end

След като запазите горната функция някъде във вашия MATLAB път, можете да я извикате по следния начин:

fileList = getAllFiles('D:\dic');
- person sadmicrowave; 14.04.2010
comment
можете да опитате да проверите дали не е null: if($(div#esd-names li# + valueid) != null) или да проверите дали id съдържа вашата стойност с: if($(div#esd-names li[id*= + valueid + ]) - person drusnov; 14.04.2010
comment
Току-що редактирах последния пример .. трябва да е [id*= вместо [id8= ... съжалявам - person drusnov; 14.04.2010
comment
Реших толкова много и направих [id*=, когато го опитах...все още не работи - person sadmicrowave; 14.04.2010
comment
Всъщност вашият синтаксис все още е грешен (липсват някои цитати, от които се нуждаете:..................................... . if($(div#esd-names li[id*=' + valueid + ']).... - person sadmicrowave; 14.04.2010
comment

Редът зависи от операционната система и не е изрично дефиниран по друг начин.

Те са достатъчно лесни за филтриране.

   opendir MYDIR, "$dir";
   my @FILES = grep !/^\.\.?$/, readdir MYDIR  ;
   closedir MYDIR;
- person drusnov; 14.04.2010
comment
Редактирах първоначалния си въпрос, за да включа повече код, както поискахте. - person sadmicrowave; 14.04.2010