1
<script type="text/javascript">
function prepare_values()
{ldelim}
        var flag= true;
        var i=0;
    var total_questions = new Array();
    var total_answer = new Array();
        while(flag)
            {ldelim}
            var questions = document.getElementById("question_div_"+i); 
            if (questions == null)
            {ldelim}
                flag=false;
                alert("Value of flag = "+flag);
            {rdelim}

            var answer = document.getElementById("answer_div_"+i);
            total_questions[i]=questions.firstChild.innerHTML; 
            if(answer.firstChild.attributes['type'].value == 'text')
                {ldelim}
                    total_answer[i]=answer.firstChild.nodeValue;
                {rdelim}

            if(answer.firstChild.attributes['type'].value == 'textarea')
                {ldelim}
                    total_answer[i]=answer.firstChild.nodeValue;
                {rdelim}

            if(answer.firstChild.attributes['type'].value == 'radio_div')
                {ldelim}
                       var radio_button_parent = document.getElementById(answer.firstChild.id);
                       var oRadio = document.getElementsByName(radio_button_parent.firstChild.name);
                       for(var k = 0; k < oRadio.length; k++)
                       {ldelim}
                          if(oRadio[k].checked)
                          {ldelim}
                             var radio_button_value = document.getElementById(oRadio[k].id);
                             alert("From inside of ever = "+radio_button_value.nextSibling.innerHTML);
                             total_answer[i]=radio_button_value.nextSibling.innerHTML;
                           {rdelim}
                       {rdelim}


                {rdelim}

    i=i+1; 
    {rdelim} 

    alert("hello");
{rdelim}
</script>

以上是我的 JS 代码,它SMARTY在单击按钮时在模板文件中运行。代码运行良好,只是它没有运行倒数第三行,即 alert("Hello"); 之后的任何事情{redelim}都被忽略了。该怎么办 ?


这是萤火虫的代码:

<script type="text/javascript">
function prepare_values()
{
var flag= true;
var i=0;
var total_questions = new Array();
var total_answer = new Array();
while(flag)
{
var questions = document.getElementById("question_div_"+i);
if (questions == null)
{
flag=false;
alert("Value of flag = "+flag);
}
var answer = document.getElementById("answer_div_"+i);
total_questions[i]=questions.firstChild.innerHTML;
if(answer.firstChild.attributes['type'].value == 'text')
{
total_answer[i]=answer.firstChild.nodeValue;
}
if(answer.firstChild.attributes['type'].value == 'textarea')
{
total_answer[i]=answer.firstChild.nodeValue;
}
if(answer.firstChild.attributes['type'].value == 'radio_div')
{
var radio_button_parent = document.getElementById(answer.firstChild.id);
var oRadio = document.getElementsByName(radio_button_parent.firstChild.name);
for(var k = 0; k < oRadio.length; k++)
{
if(oRadio[k].checked)
{
var radio_button_value = document.getElementById(oRadio[k].id);
alert("From inside of ever = "+radio_button_value.nextSibling.innerHTML);
total_answer[i]=radio_button_value.nextSibling.innerHTML;
}
}
}
i=i+1;
}
alert("hello");
}
</script> 
4

1 回答 1

1

我不知道代码中的问题是什么以及为什么它不能按预期工作,但这就是我如何让我的代码直截了当。
这是新的工作代码:

function prepare_values()
{
    var flag= true;
    var i=0;
    var total_questions = new Array();
    var total_answer = new Array();
    while(flag)
    {
        var questions = document.getElementById("question_div_"+i);
        if (questions == null)
            {
                break;
            }
        var answer = document.getElementById("answer_div_"+i);
        total_questions[i]=questions.firstChild.innerHTML;
        if(answer.firstChild.attributes['type'].value == 'text')
            {
                total_answer[i]=answer.firstChild.nodeValue;
            }
        if(answer.firstChild.attributes['type'].value == 'textarea')
            {
                total_answer[i]=answer.firstChild.nodeValue;
            }
        if(answer.firstChild.attributes['type'].value == 'radio_div')
        {
            var radio_button_parent = document.getElementById(answer.firstChild.id);
            var oRadio = document.getElementsByName(radio_button_parent.firstChild.name);
            for(var k = 0; k < oRadio.length; k++)
                {
                    if(oRadio[k].checked)
                    {
                        var radio_button_value = document.getElementById(oRadio[k].id);
                        alert("From inside of ever = "+radio_button_value.nextSibling.innerHTML);
                        total_answer[i]=radio_button_value.nextSibling.innerHTML;
                    }
                }
        }
    i=i+1;
    }

    alert("hello");
}

我所做的只是替换

if (questions == null)
{
    flag=false;
    alert("Value of flag = "+flag);
}


if (questions == null)
{
    break;
}


尽管我的问题已解决,但我仍然想知道为什么我以前的代码无法正常工作,因为它仍然可以正常工作,因为它是正确的。如果有人可以指出问题,请这样做,我将不胜感激。

于 2012-11-12T12:23:28.827 回答