Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Выполнить функцию привязаную к кнопке


Автор: Castro 1.10.2007, 19:49
написал функцию 
Код

function printLog(){
var text='';
var j=0;
var elemArray=document.getElementsByTagName('input');
    for(i=0;i<elemArray.length;i++)
    {  
    /*alert("name is "+elemArray[i].name);*/
        if(elemArray[i].name=='testID'){
            j=i+1;
            alert(elemArray[i].onclick);
            /*text+='<b>'+(j)+'</b>'+' '+elemArray[i].type+' name:'+elemArray[i].type+'<br />';*/
            }
    }
     document.getElementById('log').innerHTML = text;
}

elemArray[i].onclick возвращает текст функции, привязаной к кнопке на обработчике. Можно ли как-то эту функцию выполнить и сохранить результат её выполнения ?

Автор: dsCode 1.10.2007, 20:04
Castro, конечно.

Код

elemArray[i].onclick(); // просто выполнить

var test = elemArray[i].onclick(); // сохранить результат в переменной test


P.S.: указывайте, пожалуйста, теги <script></script>, если используете подстветку HTML или же используйте подстветку JavaScript, а то неудобно выделять элементы в коде.

Автор: Castro 1.10.2007, 21:46
Спасибо!
Попутный вопрос-как получить текст, который завёрнут в спан?
Делал что-то вроде
Код

<script>
var span=document.getElementsByTagName('span');
alert(span[0].nodeValue);
</script>

но похоже это что-то не в ту степь. А как правильно?

Автор: dsCode 1.10.2007, 21:49
Castro, alert(span[0].innerHTML);

Автор: fidres 2.10.2007, 10:31
а выполнение какого-то действа связанного с компонентом можно произвести через eval()

Автор: Castro 2.10.2007, 11:40
dsCode, спасибо огромное

Автор: dsCode 2.10.2007, 12:05
fidres, ну да, почему нет?

Автор: Castro 2.10.2007, 12:22
Для теста написал вот такое

Код

<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script>
function f()
{
var s=document.getElementsByTagName('span');
var b=document.getElementsByTagName('input');
var html='';
var d;
d=b[0].onclick();
html=s[0].innerHTML+' '+d+'<br>';
document.getElementById('r').innerHTML = html;
}
function f1 (a,b)
{
var c=0;
c=a*b;
return c;
}
</script>
</HEAD>

<BODY>
<span>Test1</span> <input type="button" value='Fuck1' onClick="f1(4,5);"><br>
<span>Test2</span> <input type="button" value='Fuck2' onClick="f1(3,8);"><br><br>
<input type="button" value='Fuck3' onClick="f();">
<div id='r'></div>
</BODY>
</HTML>

и тишина.  Обработчие кнопки возвращает undefined. Почему?

Автор: dsCode 2.10.2007, 13:06
Castro, а вот так уже нельзя, потому что переменная d ждет результат (т.е. что-то, что будет стоять после return в том, что вызывается. Сложно загнул, но так и есть). Если в onClick'e у кнопки написать return 20, тогда var d = b[0].onclick(); сработает и d будет иметь значение 20. А так - нет ретурна - нет значения. Фунция f1(...) возвращает свой результат в onClick, но сам onClick ничего не возвращает. Поэтому:

Код

<input type="button" value='Fuck1' onClick="return f1(4,5);" />

Автор: Castro 2.10.2007, 13:16
 smile Кроме слова "фигасе" ничего сказать не могу smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)