Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript使用php循环动态创建的控件_Php_Javascript - Fatal编程技术网

使用javascript使用php循环动态创建的控件

使用javascript使用php循环动态创建的控件,php,javascript,Php,Javascript,好吧,这种情况有点奇怪,但无论如何。此PHP代码生成几个单选按钮: for($i = 0; $i<count($questionList); $i++) { echo $questionList[$i]->__get(QuestionId).'-'.$questionList[$i]->__get(QuestionText).'<br />'; $answerList = $questionList[$i]->

好吧,这种情况有点奇怪,但无论如何。此PHP代码生成几个单选按钮:

    for($i = 0; $i<count($questionList); $i++)
    {
        echo $questionList[$i]->__get(QuestionId).'-'.$questionList[$i]->__get(QuestionText).'<br />';

        $answerList = $questionList[$i]->GetAnswers();

        for($j = 0; $j<count($answerList); $j++)
        {
            echo '<br /><input type=\'radio\' name=\'group'.$i.'\' id=\'radioButtonAnswer'.$answerList[$j]->__get(AnswerId).'\' value=\''.$answerList[$j]->__get(AnswerId).'\' >'.
            $answerList[$j]->__get(AnswerText).'</input>';
        }
        echo '<br /><br />';
    }
for($i=0;$i_uu-get(QuestionId)。”-.$questionList[$i]->u-get(QuestionText)。“
”; $answerList=$questionList[$i]->GetAnswers(); 对于($j=0;$j___)get(AnswerText)。”; } 回音“

”; }
好的,这很好,在创建复选框之后,我试图运行一些代码来获取所有单选按钮,但它不起作用,所以我尝试了几次只获取一个单选按钮,它只在第一次获取它

function Validate()
{

    var i = 1;

    do
    {
        document.writeln(document.getElementById('radioButtonAnswer2') == null);

        i ++;
    }while(i < 10);

    document.writeln('out of loop');

    return false;
}
函数验证()
{
var i=1;
做
{
document.writeln(document.getElementById('RadioButtonSwer2')==null);
i++;
}而(i<10);
document.writeln(“循环外”);
返回false;
}
因此,我确信“RadioButtonSwer2”存在,并且不应为空。但这是我在单击提交按钮时得到的结果:

假-真-真循环外

第一次不是空的,但之后是空的。有什么想法吗


谢谢!

您可以使用
document.getElementsByName(“组”)
获取所有单选按钮

这个循环工作正常。问题在于document.writeln(),它替换了页面中的html,因此DOM元素消失了。下面是一个更新版本,它使用了一个警报

function Validate(){  
  var radioGroup = document.getElementsByName("group");
  var results = "";
  for(i = 0, len = radioGroup.length; i < len; i++){
    currentRadio = radioGroup[i];
    results += "\n" + currentRadio.id + " is ";
    results += (currentRadio.checked ? "checked" : "not checked");
  }
  results += "\n..out of loop...";
  alert(results);     
  return false;
}
函数验证(){
var radioGroup=document.getElementsByName(“组”);
var结果=”;
对于(i=0,len=radioGroup.length;i
这可能是因为您生成的HTML无效。您也不应该显式调用
\u get()
函数,但这很可能是一个不相关的问题

比如:

<input type="radio" ...>Label Text</input>
标签文本
不是定义单选按钮的正确方法

请尝试以下代码:

for($j = 0; $j<count($answerList); $j++)
{
        echo '<br /><input type="radio" name="group'.$i.'" id="radioButtonAnswer'.$answerList[$j]->AnswerId.'" value="'.$answerList[$j]->AnswerId.'" />';
        echo '<label for="radioButtonAnswer'.$answerList[$j]->AnswerId.'">'.$answerList[$j]->AnswerText.'</label>';
}
for($j=0;$jansverid.“value=“”。$answerList[$j]->AnswerId.“/>”;
回显“.$answerList[$j]->AnswerText.”;
}

编辑以添加:啊,现在我明白了。您正在使用
document.writeln()
。该函数覆盖页面内容


因此,第一次进入循环时,元素确实存在,它执行
document.writeln()
调用,将“true”写入页面。这将覆盖之前页面上的所有内容。(您没有注意到当页面加载时,只有有javascript的输出吗?)。下次通过循环时,它会再次尝试查找单选按钮,但它已被删除并替换为javascript输出。现在它已不存在。

运气不好,它甚至不会进入“外循环”,它只会进入表单的操作页面。这太疯狂了,我在“var radioGroup”之后为您的函数添加了一行额外的内容=“要检查radioGroup变量是否为null,它是否为!因此循环应该可以工作,但它甚至不能进入其中,请查看:function validate(){var radioGroup=document.getElementsByName(“group1”);document.write('is null:'+radioGroup==null)for(i=0,len=radioGroup.length;i');并且我仍然在循环外得到假真真真真真真的有其他函数可以使用吗?哈哈,天哪,这真是太棒了!我以为writeln就像控制台。WriteLine()在C#或其他语言中,你知道,为了节省你添加
。这解决了我的问题,非常感谢!你能添加一段由PHP输出的HTML代码吗?只是想看看,以确保所有内容都正确无误。当然这里有一些

Answer1
Answer2
answer3 answer已更新,发现原因。