Javascript 按ID多次搜索。搜索不知道完整ID。Sapui5
我想知道是否有任何选项可以通过id搜索元素,但不知道完整id,只知道其中的一部分。因此,我可以在不知道其完整ID的情况下找到一个元素,或者找到具有类似ID的多个元素 例如,如果我知道我有3个具有以下ID的对象: “object1”、“object2”和“object3” 我可以说:Javascript 按ID多次搜索。搜索不知道完整ID。Sapui5,javascript,jquery,search,sapui5,getelementbyid,Javascript,Jquery,Search,Sapui5,Getelementbyid,我想知道是否有任何选项可以通过id搜索元素,但不知道完整id,只知道其中的一部分。因此,我可以在不知道其完整ID的情况下找到一个元素,或者找到具有类似ID的多个元素 例如,如果我知道我有3个具有以下ID的对象: “object1”、“object2”和“object3” 我可以说: getElementByID(“objectID*”) 我已经在JavaScript中使用:input[id*='PART\u OF\u id\u I\u KNOW'] 但是它返回了一个HTML对象,我需要它用于SA
getElementByID(“objectID*”)
我已经在JavaScript中使用:input[id*='PART\u OF\u id\u I\u KNOW']
但是它返回了一个HTML对象,我需要它用于SAPUI5
我可以使用类似于:
var myControl=sap.ui.getCore().byId('myId')代码>
但不必匹配完整ID(myID)?谢谢
它不会起作用。这是因为当您试图通过sap.ui.getCore()获取控制时,sapui5会自动将额外的字符串添加到您的id中,例如sap.ui.getCore().byId('xml0--myId')
,如果您在清单中提供了viewId,则在呈现控制时它会使用该字符串。如
sap.ui.getCore().byId('yourManifiestId--myId')
虽然我不建议这样做,但在您描述的方式上是可能的。您可以使用jQuery查找具有类似ID的元素,获取元素的ID并将其传递给sap.ui.getCore().byId()
你为什么要这么做?是否因为您想访问视图和片段中的控件(带有前缀ID)?您是否为该控件提供了一个ID“myControl”,但是sap.ui.getCore().byId(“myControl”)
在框架向其添加前缀时不起作用?
如果是,获取控件引用的唯一可靠方法是在MVC视图和控制器以及片段中使用框架提供的方法
如果您的视图中有一个名为“myButton”的控件,请从控制器中执行this.byId(“myButton”)
或this.getView().byId(“myButton”)
,以获取对控件的引用
如果在通过sap.ui.xmlfragment(“,”myFragment.fragment.xml“)嵌入视图的片段中有一个名为“myButton”的控件,则使用sap.ui.core.fragment.byId(“,”myButton”)
访问它
无论您做什么,都不要假设框架如何创建这些前缀ID。这些没有文档记录,可以更改。不知道SAPUI5,但是您已经标记了这个jquery
,并在javascript中使用了jquery选择器,请在jquery中尝试:$(“输入[id*='PART\u OF_id\u I\u KNOW'”)
when you use `var myControl = sap.ui.getCore().byId('myId');`
var aElements = $("div[id*='PART_OF_ID_YOU_KNOW']");
//Lets say the first element returned is the one belonging to your control
var oControl = sap.ui.getCore().byId(aElements[0].id); //If the element is a SAPUI5 control, you should get it.