如何将字符串传递给xhtml中的javascript函数?

问题描述:

function passString(str) 
{ 
    alert(str); 
} 

function passText() 
{ 
    str = document.getElementById('formId:hidden1').value; 
    alert(str); 
} 

我使用两种以上的JavaScript函数来获取从JSF Bean文件时得到的线,但没有工作。该字符串被成功地从“#{} addRoute5.teamNames”(JSF豆文件 - 见下文)获得,并在inputText的显示,但是JavaScript的不能接受来自XTHML某种原因字符串。我在XHTML文件的代码如下:提前如何将字符串传递给xhtml中的javascript函数?

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core"> 
    <f:view> 
     <h:head> 
      <link href="css/myCss1.css" rel="stylesheet" type="text/css"/> 
      <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
      <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
      <title>Paris-Dakar Rally</title> 
      <link href="css/mapsStyle.css" rel="stylesheet" type="text/css"/> 
      <script type="text/javascript" src="//maps.googleapis.com/maps/api/js? sensor=false"></script> 

     </h:head> 
     <h:body onload ="#{addRoute5.calculateLatMarker()}"> 
      <div id="container"> 
       <div id="header"> 
        <div id="title"> 
         <span>Paris - Dakar Rally</span> 
        </div> 
       </div> 

       <div id="map_canvas"></div> 

       <h:form id="formId"> 


        <div id="body"> 

         <div class="transbox"> 
          <h:inputText id="hidden1" value="#{addRoute5.teamNames}"/>        
          **<h:commandButton type ="button" value="Start Simulation"  onclick ="passText()" or onclick="passString(#{addRoute5.teamNames})"/>** 


         </div> 
        </div> 
        </h:form> 
      </div> 
     </h:body> 
    </f:view> 
</html> 
+0

尝试的document.getElementById(” hidden1')...因为它也有id – Moon 2012-03-13 17:22:27

+0

'passText()'方法应该可以工作,但它很笨拙。 'passString()'方法有一个明显的语法错误,您可以通过查看生成的HTML输出或浏览器的JS控制台来解答/解决问题。我当然可以将它作为答案发布,但这并不能解释为什么'passText()'不起作用,我也很好奇你正在试图解决什么功能要求,因为可能存在比这样笨拙的事情要好得多。 – BalusC 2012-03-13 17:22:43

+0

@Moon:这是一个JSF'',而不是一个HTML''。 – BalusC 2012-03-13 17:23:15

停止

感谢。退后。解决问题。

您提供的代码是将在服务器上进行处理的模板。然后传递给浏览器。然后浏览器将从HTML中提取JavaScript并运行它。

看源代码的浏览器进程。然后问自己“这个JavaScript不是我所期望的吗?或者模板不输出我想要的JavaScript?”

它看起来像你有这样的:

onclick="passString(#{addRoute5.teamNames})" 

这将产生类似:

onclick="passString(foo)" 

当你想要的东西,如:

onclick="passString('foo')" 
+0

感谢昆汀。 。我应该在我的输出字符串中包含开始时的单引号和结束时在我计算我的字符串的java bean文件中 – Angelos 2012-03-13 17:49:46