函数未定义-jsf/javascript
我无法调用我的javascript函数。我已经尝试了onChange SelectMenu now和tag ajax,但它们都给出了以下消息: 消息:“sumarFilas”未定义 使用函数调用跟踪函数和jsf:函数未定义-jsf/javascript,javascript,ajax,jsf,Javascript,Ajax,Jsf,我无法调用我的javascript函数。我已经尝试了onChange SelectMenu now和tag ajax,但它们都给出了以下消息: 消息:“sumarFilas”未定义 使用函数调用跟踪函数和jsf: <script language="javascript"> var numfilasRelacion=1; var form=document.theForm; var valorNRN=""; function sumaRelaci
<script language="javascript">
var numfilasRelacion=1;
var form=document.theForm;
var valorNRN="";
function sumaRelacion() {
var miTablaRelacion = document.getElementById("form:j_idt115_panel");
var fila = document.createElement("tr");
var celda1 = document.createElement("td");
var celda2 = document.createElement("td");
var celda3 = document.createElement("td");
var celda4 = document.createElement("td");
var celda5 = document.createElement("td");
numfilasRelacion=miTablaRelacion.getElementsByTagName("tr").length + 1 ;
celda1.innerHTML = "<p:inputText id='inicioRango' />";
celda2.innerHTML = "<p:inputText id='finalRango' />";
celda3.innerHTML = "<p:inputText id='numeroGrupoId' />";
celda4.innerHTML = "<p:inputText id='checkpto'/>";
celda5.innerHTML = "<p:inputText id='checkptoH'/>";
fila.appendChild(celda1);
fila.appendChild(celda2);
fila.appendChild(celda3);
fila.appendChild(celda4);
fila.appendChild(celda5);
miTablaRelacion.appendChild(fila);
}
function restarFilas(rangos) {
var miTablaRelacion = document.getElementById("form:j_idt115_panel");
var i = numfilasRelacion-1;
do{
miTablaRelacion.deleteRow(i);
numfilasRelacion=numfilasRelacion-1;
i=i-1;
}
while (miTablaRelacion.rows.length != rangos)
}
function sumarFilas(){
alert("sumarFilas");
var numfilas=numfilasRelacion;
var rangos = document.getElementById("form:j_idt115_panel").value;
if(rangos>numfilas){
for(var i=0;rangos-numfilas>i;i++){
sumaRelacion();
}
}else{
restarFilas(rangos);
}
}
</script>
var numfilasRelacion=1;
var form=document.theForm;
var valorrn=“”;
函数sumaRelacion(){
var-miTablaRelacion=document.getElementById(“格式:j_idt115_面板”);
var fila=document.createElement(“tr”);
var celda1=document.createElement(“td”);
var celda2=document.createElement(“td”);
var celda3=document.createElement(“td”);
var celda4=document.createElement(“td”);
var celda5=document.createElement(“td”);
numfilasRelacion=miTablaRelacion.getElementsByTagName(“tr”).length+1;
celda1.innerHTML=“”;
celda2.innerHTML=“”;
celda3.innerHTML=“”;
celda4.innerHTML=“”;
celda5.innerHTML=“”;
fila.appendChild(celda1);
fila.appendChild(celda2);
fila.appendChild(celda3);
fila.appendChild(celda4);
fila.appendChild(celda5);
附肢三叶草(fila);
}
函数restarFilas(rangos){
var-miTablaRelacion=document.getElementById(“格式:j_idt115_面板”);
var i=numfilasRelacion-1;
做{
删除行(i);
numfilasRelacion=numfilasRelacion-1;
i=i-1;
}
while(miTablaRelacion.rows.length!=rangos)
}
函数sumarFilas(){
警报(“sumarFilas”);
var numfilas=numfilasRelacion;
var rangos=document.getElementById(“格式:j_idt115_panel”).value;
如果(rangos>numfilas){
对于(var i=0;rangos numfilas>i;i++){
苏马雷拉西翁();
}
}否则{
restarFilas(兰戈斯);
}
}
jsf:
<h:outputText value="Nº Intervalo a Portar:" />
<p:selectOneMenu value="#{bean.parametro.intervalo}">
<f:selectItem itemLabel="1" itemValue="1" />
<f:selectItem itemLabel="2" itemValue="2" />
<f:selectItem itemLabel="3" itemValue="3" />
<f:selectItem itemLabel="4" itemValue="4" />
<f:selectItem itemLabel="5" itemValue="5" />
<f:selectItem itemLabel="6" itemValue="6" />
<f:selectItem itemLabel="7" itemValue="7" />
<f:selectItem itemLabel="8" itemValue="8" />
<f:selectItem itemLabel="9" itemValue="9" />
<f:selectItem itemLabel="10" itemValue="10" />
<f:ajax event="change" onevent="sumarFilas"></f:ajax>
</p:selectOneMenu>
<h:panelGrid columns="6" style="margin-bottom:10px" cellpadding="5"
id="pgrid121">
<h:outputText value="Portabilidade Grupo" id="pg1" />
<p:selectBooleanCheckbox
value="#{bean.parametro.portabilidadeGrupo}" id="pg11" />
<h:outputLabel for="numInicial1" value="Nº Inicial Int:" id="ni1" />
<p:inputText id="numInicial1" value="#{bean.parametro.numInicial}" />
<h:outputLabel for="numFinal1" value="Nº Final Int:" id="nf1" />
<p:inputText id="numFinal1" value="#{bean.parametro.numFinal}" />
<h:outputLabel for="idGrupo1" value="Id do Grupo:" id="ig1" />
<p:inputText id="idGrupo1" value="#{bean.parametro.idgrupo}" />
<h:outputText value="PTO" id="pt1" />
<p:selectBooleanCheckbox value="#{bean.parametro.pto}" id="pt11" />
</h:panelGrid>
谢谢 您尝试使用javascript生成JSF代码。Javascript在服务器处理整个jsf页面后运行,生成html,然后将呈现的html响应发送到浏览器。浏览器无法自行处理JSF代码,它已完全失效 尝试如下更改您的函数
function sumarFilas(data){
if (data.status === 'success') {
alert("sumarFilas");
var numfilas=numfilasRelacion;
var rangos = document.getElementById("form:j_idt115_panel").value;
if(rangos>numfilas){
for(var i=0;rangos-numfilas>i;i++){
sumaRelacion();
}
}else{
restarFilas(rangos);
}
}
}
让我知道它是否适合你
另外,看看这个BalusC答案
您能正确缩进代码吗?看起来没问题。你的脚本实际执行了吗?使用
而不是不推荐使用的language
属性。您是否按类型更改了语言,并通过单击该项发出消息。我认为您不了解JSF组件是如何工作的,在您的脚本中,您正试图使用javascript添加JSF组件,并调用celda5.innerHTML=“”但是您的web浏览器不会做任何有用的事情,因为这些标记是由服务器端的facelets视图解析程序解析的。我强烈建议您在开发项目时暂停一两周,并参加一个关于JSF、HTML和JavaScript的刷新课程。尤其是“服务器端”和“客户端”的问题,您似乎完全不知道。这只会导致巨大的混乱和错误的代码。这确实回答了最初提出的具体问题。必须定义函数参数。但是,除了这个错误信息之外,他的方法还包含了很多很多问题。