Ошибка "Expected token: '}' "
Есть код, который ищет 2ую таблицу на странице и во всех строках этой таблицы выполняеть поиск по 3й ячейке.
var tableElement = document.documentElement.getElementsByTagName("table")[1]; if (tableElement!=0) { var trElement=tableElement.getElementsByTagName("tr"); for (var i = 0; i < trElement.length; i++) { var td=trElement[i].getElementsByTagName("td"); if(td[3].nodeValue=="Охотник") { td[3].nodeValue="НЕохотник"; var hhrElement=trElement.getElementsByTagName("a")[0]; if(hhrElement!=0) hhrElement.nodeValue="aaaaa"; }; }; }; выбает ошибку "JavaScript User JS compilation Syntax error D:\Дистрибутивы\Internet\Opera\hero.js : line 33 of User JS script : Expected token: '}' if(hhrElement!=0) hhrElement.n" Причем именно "if(hhrElement!=0) hhrElement.n"! Скобки расставлены вроде верно... Тестируется в Opera 9.64 (Seven RC2). Какие будет советы и предложения ?) |
"испрашил" на
var tableElement = document.documentElement.getElementsByTagName("table")[1]; if (tableElement!=0) var trElement=tableElement.getElementsByTagName("tr"); Ошибка "User Javascript thread Error: name: TypeError message: Statement on line 12: Cannot convert undefined or null to Object Backtrace: Line 12 of User JS script var trElement=tableElement.getElementsBy stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'" ничего не понимаю... :cray: |
if( tableElement ) p.s. отступы не просто так придумали ;) |
сделал более "читабельный код" с проверкой "if( tableElement )"
for(var tableElement in document.documentElement.getElementsByTagName("table")) if(tableElement) for (var trElement in tableElement.getElementsByTagName("tr")) if(trElement) for(var td in trElement.getElementsByTagName("td")) if(td) if(td.nodeValue=="Охотник") td.nodeValue="Охотник о_О"; Не помогло =( "message: Statement on line 13: Type mismatch (usually non-object value supplied where object required) Backtrace: Line 13 of User JS script for (var trElement in tableElement.getElementsByTagName("tr")) stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' " Все 3 ошибки искал в гугле ничего путного не нашел. |
var nodeList = document.getElementsByTagName("TABLE"); alert(nodeList.length); На странице ровно три таблицы выпадает алерт с "0"!!! :blink: Как это вообще возможно? |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Это что-то дает?) Цитата:
А как же то что javascript ужаляет все пробелы и табы при работе?... |
Цитата:
|
хехе, да привыкшему к С++ сложно отвыкать)
Спасибо, а где можно почитать синтаксис свзанный с "пробелами"? Если расскажут как побороться с "отсутвием" таблиц в document.getElementsByTagName("table")я уж дальше сам домучаю свой великий скрипт)))) |
Цитата:
Цитата:
На плюсах тоже без отступов пишете? |
А если они "игнорируються" то причем тут "отступы не просто так придумали" и "это не значит, что их не нужно ставить" -> и зачем их тjulf ставить? (кроме "красивости"=читабельнос и кода?)
Цитата:
НУ разве что он вызывает в тот момент когда боди уже загружен а таблицы еще нет... ( а такое возможно?) |
Цитата:
Цитата:
|
для поиска ошибок в коде мало)
ну раз возможно буду ждать мнения "x-yuri".... |
Цитата:
Цитата:
|
о ты появился)
ответь че там с поиском элементво может быть? и как это с доктипом связано?) |
Kolyaj уже ответил. С DOCTYPE это не связано
|
А с чем тогда?((((
|
Kolyaj уже ответил и я с ним согласился, как ты помнишь
|
Имя тега заглавными буквами не надо писать
|
ээ.. и в чем же ошибка?
В пробелах? или в том что скрипт работает перед загрузкой? |
pestO,
Если этот скрипт находится по коду выше, чем элемент с которым он пытается работать, и не является обработчиком события загрузки документа, то ошибка в этом. |
этот скрипт являеться User JS, подключенным к страннице в настройках operы =)
Повторюсь: getElementsByTagName("body") находит 1н боди (что являеться правдой) но getElementsByTagName("table") не находит ни 1ну таблицу (хотя они есть) |
И что? Это ни о чем не говорит. Попробуйте такой код:
window.addEventListener("DOMContentLoaded", function() { alert(document.getElementsByTagName("table")[0].nodeName); }, false); С поправкой на window/document загружаемого документа (я не в курсе, как работает User JS в opera). |
Цитата:
попробовал window.addEventListener("DOMContentLoaded", function() { alert(document.getElementsByTagName("table").count); }, false); пишет "undefined" |
pestO,
Не count, а length. |
все, спасибо, все понял и ничего одновременно =)
|
так. Снова я где-то делаю ошибку...
window.addEventListener("DOMContentLoaded", function() { for ( var a in document.getElementsByTagName("td") ) {if( a.nodeValue=="Охотник" ) a.nodeValue="Охотник о_О"; }; }, false); JavaScript User JS compilation Syntax error D:\Дистрибутивы\Internet\Opera\hero.js : line 20 of User JS script : Expected token: ')' }, fal Вот что тут я не так делаю? опять "пробелы"? |
Нормально тут все с синтаксисом.
|
уже радует :write: , а что тогда? :help:
|
Цитата:
|
начинаем :write:
Яваскрипт User JS компиляция Синтаксическая ошибка D:\Дистрибутивы\Internet\Opera\hero.js : строка 20 в User JS скрипте : Ожидаеться символ : ')' }, fal И что? :-/ я не понимаю.. все скобки закрыты... |
какая из строк 20-ая?
|
}, false); |
Enjoy your opera.
|
оО.. первый совет "дельный" =))
Потом опробую пару версий.. Есть еще дельные предложения? |
Этот код не содержит синтаксических ошибок, что еще можно сказать?
А если вот так запустить, что пишет: window.addEventListener("DOMContentLoaded", function() { for ( var a in document.getElementsByTagName("td") ) {if( a.nodeValue=="Охотник" ) a.nodeValue="Охотник о_О"; }; }); |
Часовой пояс GMT +3, время: 14:13. |