Используйте метод element.classList
.contains
:
element.classList.contains(class);
Это работает во всех текущих браузерах, а также есть полисы для поддержки старых браузеров.
Альтернативно, если вы работаете со старыми браузерами и не хотите использовать полисы для их исправления, использование indexOf
верное, но вы должны его настроить немного:
function hasClass(element, className) {
return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;
}
В противном случае вы также получите true
, если класс, который вы ищете, является частью другого имени класса.
jQuery использует аналогичный (если не тот же) метод.
Применяется к примеру:
Поскольку это не работает вместе с коммутатором вы можете добиться такого же эффекта с помощью этого кода:
var test = document.getElementById("test"),
classes = ['class1', 'class2', 'class3', 'class4'];
test.innerHTML = "";
for(var i = 0, j = classes.length; i < j; i++) {
if(hasClass(test, classes[i])) {
test.innerHTML = "I have " + classes[i];
break;
}
}
Он также менее избыточен;)
Python использует функцию fopen stdio и передает режим в качестве аргумента. Я предполагаю, что вы используете окна, поскольку @Lev говорит, что код отлично работает в Linux.
Ниже приведена документация окна fopen для окон, это может быть ключом к решению вашей проблемы:
Когда «r +», «w +» или «a +» тип доступа указан, как чтение, так и запись разрешены (файл считается открытым для «обновления»). Однако при переключении между чтением и записью должна быть промежуточная операция fflush, fsetpos, fseek или rewind. Текущая позиция может быть указана для операции fsetpos или fseek, если это необходимо.
blockquote>Итак, решение заключается в добавлении
file.seek()
перед вызовомfile.write()
. Для добавления к концу файла используйтеfile.seek(0, 2)
.Для вашей справки file.seek работает следующим образом:
Чтобы изменить положение файлового объекта, используйте f.seek (смещение, from_what). Позиция вычисляется добавлением смещения к точке отсчета; контрольная точка выбирается аргументом from_what. A from_what значение 0 измеряет от начала файла, 1 использует текущую позицию файла, а 2 использует конец файла в качестве контрольной точки. from_what можно опустить и по умолчанию 0, используя начало файла в качестве контрольной точки.
blockquote>[ссылка: http://docs.python.org/tutorial/inputoutput .html]
Как упоминалось в комментариях @lvc и @Burkhan в его ответе, вы можете использовать новую открытую функцию из модуля io . Тем не менее, я хочу указать, что функция записи не работает точно так же в этом случае - вам нужно указать строки unicode в качестве входных данных [просто префикс
u
для строки в вашем случае]:from io import open fil = open('text.txt', 'a+') fil.write('abc') # This fails fil.write(u'abc') # This works
Наконец, пожалуйста, избегайте использования имени «файл» в качестве имени переменной, поскольку оно относится к встроенному типу и будет незаметно переписанным, что приведет к некоторым трудноопределяемым ошибкам.
Решение состоит в использовании open
из io
D:\>python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> f = open('file.txt','a+')
>>> f.tell()
0L
>>> f.close()
>>> from io import open
>>> f = open('file.txt','a+')
>>> f.tell()
22L