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 >>})中,該怎麼辦? 這種方式直到文檔準備好纔會運行。 你想讓你的代碼運行的事件是什麼? –