Изменение имени и выполнение функции в цикле
Всем примет.
Подскажите, пожалуйста, как сделать, чтобы код ниже заработал? for (nnn=0;nnn<97;nnn++){ for (bbb=0;bbb<8;bbb++){ if(new frames.quiz_main.initValuate+nnn+()[+bbb+].valuation==1){ ggg="radio0"+nnn+"00"+bbb; frames.quiz_main.document.domanda.ggg.checked=true; } } } Интересует сборка и запуск вот этой строки: new frames.quiz_main.initValuate+nnn+()[+bbb+].valuation;==1 Заранее спасибо. |
Цитата:
на заметку: var i = 3; while(i--){ alert('id'+i); } |
Цитата:
Строка, после формирования должна выглядеть вот так, которая в свою очередь должна выполниться и получить значение: new frames.quiz_main.initValuate22()[1].valuation Вот так не работает(алерт не срабатывает :(, значит строка не выполняется): for (nnn=0;nnn<97;nnn++){ for (bbb=0;bbb<8;bbb++){ if('new frames.quiz_main.initValuate'+nnn+'()['+bbb+'].valuation'==1){ alert('Test'); ggg='radio0'+nnn+'00'+bbb; frames.quiz_main.document.domanda.ggg.checked=true; } } } |
Если сформировать строку, она не обязана исполняться. Строки не занимаются этим:) Да и вообще, бредово как-то выглядет в этом всем деле оператор new.
|
<script type="text/javascript"> window.onload = function(){ for(var i=0; i<3; i++){ var element = document.createElement('div'); element.id = 'id'+i; element.innerHTML = 'click'+i; document.body.appendChild(element); element.onclick = (function(){ return function(){ alert(this.id); }; })(); } }; </script> |
всем спасибо, вопрос решил...
помог eval() :) var nn=1; for (i=nn;i<=98;i++){ for (bb=0;bb<9;bb++){ cc='new frames.quiz_main.initValuate'+i+'()['+bb+'].valuation'; if(eval(cc)==1){ if(i>10){ ff='radio0'+i+'00'+bb;} if(i<10){ ff='radio00'+i+'00'+bb;} hh='frames.quiz_main.document.domanda.'+ff+'.checked=true'; jj=eval(hh); } } } |
Вообще подозреваю что нужно было что-то типа:
var nn=1; for (i=nn;i<=98;i++){ for (bb=0;bb<9;bb++){ if(new frames.quiz_main['initValuate'+i]()[bb].valuation){ if(i>10){ ff='radio0'+i+'00'+bb;} if(i<10){ ff='radio00'+i+'00'+bb;}//а если i==10? frames.quiz_main.document['domanda.'+ff].checked=true; } } } |
Часовой пояс GMT +3, время: 15:16. |