2事情要检查。
XSP.getElementById(“#{id:elementName}”)代码是否正确地找到该元素?注意:您应该在此处使用服务器端控件ID,而不是任何其他属性,例如名称将不起作用。如果你正在尝试按名称做,那么你应该使用另一种方法。
你试图得到什么类型的元素?如果它是一个文本输入,那么你可以使用.value的,但如果它是一个选择,或者一些其他类型的控制它可能是一个不同的方法/属性
要检查你正在寻找正确的元素试试这个(在CSJS按钮事件):
var el = XSP.getElementById('#{id:serverSideControlId}');
console.log(el);
点击按钮,然后检查你的JavaScript控制台在浏览器中,你应该看到某种信息的控制台上代表你的元素如:
<input type="text" name="view:_id1:inputText1" id="view:_id1:inputText1">
如果找不到元素那么你的ID必须是错的,你会看到null
一旦你确定你所得到的元素,那么你可以尝试使用XSP.getFieldValue(节点)函数,我认为它里面有一些智能来正确地找到值取决于元素的类型。
// Note that you pass in the element that you retrieved already, and not the id
var val = XSP.getFieldValue(el);
这里是一个inputText的工作例如:使用
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:inputText id="inputText1" value=""></xp:inputText>
<xp:button value="Get Element Value" id="button1">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[
var el = XSP.getElementById('#{id:inputText1}');
// Check your javascript console in your browser
console.log(el);
var val = XSP.getFieldValue(el);
// Check the contents of the value
console.log(val);
]]></xp:this.script>
</xp:eventHandler>
</xp:button>
</xp:view>
与一个按钮工作正常,但是当我用脚本块返回null,则使用它在两个打印\t \t \t \t \t <![CDATA [ 的console.log!(” 1“) \t变种EL = XSP.getElementById( '#{ID:inputText1}'); console.log(el); console.log(XSP.getFieldValue(el)); ]]> XP:THIS.VALUE> \t \t \t XP:脚本块> –
,可能与时机做,文件可能不是准备好了,所以你可能无法得到的元素。 如果您将这些语句包装在XSP.addOnLoad(function(){<< YOURSTATEMENTSHERE >>})中,该怎么办? 这种方式直到文档准备好才会运行。 你想让你的代码运行的事件是什么? –