Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод значения onclick (https://javascript.ru/forum/misc/11986-vyvod-znacheniya-onclick.html)

KamaZz 24.09.2010 17:50

Вывод значения onclick
 
alert(document.getElementById("button" + i).getElementsByTagName("a")[0].onclick);

Вызывает ошибку:
Цитата:

Error: Component is not available

Что в принципе ожидаемо т.к. по onclick срабатывает функция...
Каким образом и возможно-ли вообще экранировать вывод функции, дабы считать значение передаваемое в функцию?

GreaseMonkey...

Sweet 24.09.2010 18:15

Цитата:

Сообщение от KamaZz
Что в принципе ожидаемо т.к. по onclick срабатывает функция

Нет, чтобы она сработала, нужно ее вызвать с помощью ().
var div = document.createElement('div')
div.onclick = function(){ return 'test' }
alert(div.onclick)
alert(div.onclick())

А у тебя "Component is not available" ("Компонент недоступен") просто что-то недоступно

KamaZz 24.09.2010 18:31

Что может быть недоступно?
Значения href, title я вывожу без проблем, такая проблема существует только с onclick...

Sweet 24.09.2010 20:31

Цитата:

Сообщение от KamaZz
Что может быть недоступно?

Единственное, что пришло на ум..
<div onclick="alert(this)">text</div>
<div>text</div>
<script>
var div2 = document.getElementsByTagName('div')[1]
if (div2.addEventListener){
  div2.addEventListener('click', function(){alert(this)}, false)
} else {
  div2.attachEvent('onclick', function(){alert(this)})

} 
alert(document.getElementsByTagName('div')[0].onclick)
alert(div2.onclick)
</script>

KamaZz 25.09.2010 09:17

Прошу прощение, но зачем мне создавать евент, если я хочу просто вывести значение передаваемое в onclick?
<a onclick="sendBuildRequest('index.php?page=resources&amp;session=f8196d8eec27&amp;modus=1&amp;type=3&amp;menge=1&amp;token=4db9a09fe37081bba3519f8f4a0bfa1f');" href="#" class="fastBuild tipsStandard">
                                <img width="22" height="14" src="img/layout/pixel.gif">
                            </a>

Мне нужно вытянуть хеш "token". Alert я ставлю только что-бы проверить работоспособность скрипта.

KamaZz 25.09.2010 14:29

Пример: вывод оповещения
<li class="on" id="button5">
                    <div class="supply12">
                    <div class="buildingimg">
                                    <a onclick="sendBuildRequest('index.php?page=resources&amp;session=41adffae9bac&amp;modus=1&amp;type=12&amp;menge=1&amp;token=d982709c144721cf4d2a5e90daf50298');" href="#" title="|Совершенствовать Термоядерная электростанция до уровня 1" class="fastBuild tipsStandard">
                                Image
                            </a>
                                <a href="#" id="details" ref="12" title="|Термоядерная электростанция" class="detail_button tipsStandard slideIn">
                            <span class="ecke">
                                <span class="level">
                                   <span class="textlabel">
                                       Термоядерная электростанция 
                                   </span>
                                   0                               </span>
                            </span>
                        <div class="itemname" style="max-width: 96px;">Термоядерная электростанция</div></a>
                    </div>
                </div>
                </li>
<script>
alert(document.getElementById("button5").getElementsByTagName("a")[0].onclick);
</script>


Вот что здесь не так?

KamaZz 26.09.2010 01:34

Решение так и не нашел...
Пришлось реализовать через анальное отверстие:
for (i = 0; i < page.length + 1; i++) {
        try {
            var img = document.getElementById("button" + i).getElementsByClassName("buildingimg")[0].innerHTML;
            var token = img.substring(img.indexOf("token", 121) + 6, img.indexOf("')"));
            if (token.length == 32) break;
        } catch (e) {
            GM_log(e.message + "\nOccurred in function \"GetToken\"");
        }


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