使用javascript使用php循环动态创建的控件
好吧,这种情况有点奇怪,但无论如何。此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]->
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。这解决了我的问题,非常感谢!你能添加一段由PHP输出的HTML代码吗?只是想看看,以确保所有内容都正确无误。当然这里有一些
Answer2
answer3 answer已更新,发现原因。