TabView und Schließen-Schaltfläche Problem
-
12-09-2019 - |
Frage
Ich versuche, die gleichen wie Davs Rants Beispiel zu tun: http://blog.davglass.com/files/yui/tab3/
Aber ich muss etwas vergessen ...
Ich habe diesen Fehler:
Knoten wurde nicht "Code:" gefunden 8 [Break on dieser Fehler] this._tabParent.removeChild ( tab.get (ELEMENT));
Hier mein Code:
function onGenePubmedSubmit() {
var contentCur = document.getElementById("curatedquery");
var contentValue = contentCur.value;
// New tabView widget
var tabView = new YAHOO.widget.TabView('tvcontainer');
// Define label and content
var labelText = nameReq + '<span class="close">X</span>';
var tabcontainer = idReq;
var content = "<div id="+tabcontainer+"></div>";
// Add new tab - work well !
if (labelText && content)
{
tabView.addTab( new YAHOO.widget.Tab({
label:labelText,
content:content,
id: 'pubmedView',
active:true }));
}
// Define DataTable myPubmedListTable Columns
var myColumnDefsPubmed = [
{key:"pmid", label:"PMID", sortable:true},
{key:"articletitle", label:"Article Title", sortable:true},
{key:"abstract", label:"Abstract", sortable:true},
{key:"authorlist", label:"Authorlist", sortable:true},
{key:"medline", label:"Medline", sortable:true}
];
// Define DataSource
var myDataSourcePubmed = new YAHOO.util.DataSource("qct-list-article.html");
myDataSourcePubmed.responseType = YAHOO.util.DataSource.TYPE_JSON;
myDataSourcePubmed.connXhrMode = "queueRequests";
myDataSourcePubmed.responseSchema = {
resultsList: "articleItemList",
fields: ["pmid","articletitle","abstract","authorlist","medline"]
};
// myPubmedListTable config
var oConfigsPubmed = {
initialRequest: '?term='+ contentValue,
selectionMode: "single"
};
// Create new DataTable - myPubmedListTable
var myPubmedListTable = new YAHOO.widget.DataTable(idReq, myColumnDefsPubmed, myDataSourcePubmed,oConfigsPubmed);
// Show myPubmedListTable
myPubmedListTable.onShow();
// Remove tab on tabView ----------- this part don't work---------- !
YAHOO.util.Event.on(tabView.getElementsByClassName('close')[0], 'click', function(ev) {
YAHOO.util.Event.stopEvent(ev);
// some test - but don't work !
// tabView.set('activeTab', tabView.get('tabs')[0]);
// tabView.set('activeIndex', 1);
// tabView.removeTab(tabView.get("activeTab"));
tabView.removeTab(tabView);
});
}
Kann mir jemand helfen?
Was ich fehle?
Danke.
Lösung 3
Ich fand eine Lösung, die funktioniert, und ich fügte eine paginator.
function onGenePubmedSubmit() {
var contentCur = document.getElementById("curatedquery");
var contentCurValue = contentCur.value;
var tabView = new YAHOO.widget.TabView('tvcontainer');
var labelText = nameReq + '<span class="close">X</span>';
var tabcontainer = idReq;
var content = "<div id="+tabcontainer+"></div>";
if (labelText && content)
{
var ctabView = new YAHOO.widget.Tab({
label:labelText,
content:content,
id: 'pubmedView'+idReq,
active:true });
}
YAHOO.util.Event.on(ctabView.getElementsByClassName('close')[0], 'click',
function(ev) {
YAHOO.util.Event.stopEvent(ev);
// Verify if Tab to remove is curently the activ Tab
if (tabView.get('activeTab')==ctabView)
{
// We activate the first Tab
tabView.set('activeTab', tabView.get('tabs')[0]);
}
// If Tab to remove not activ Tab
else if (tabView.get('activeTab')!=ctabView)
{
// We set the index of the Tab that is currently active in the TabView.
tabView.set('activeIndex',tabView.get('activeIndex'));
}
tabView.removeTab(ctabView);
});
// Verify if tab exist (or not)
var tabExist = document.getElementById('pubmedView'+idReq);
if (tabExist == null)
{
tabView.addTab(ctabView);
}
else
{
alert("Tab already exist") ;
}
// Define DataTable myPubmedListTable Columns
var myColumnDefsPubmed = [
{key:"pmid", label:"PMID", sortable:true},
{key:"articletitle", label:"Article Title", sortable:true},
{key:"abstract", label:"Abstract", sortable:true},
{key:"authorlist", label:"Authorlist", sortable:true},
{key:"medline", label:"Medline", sortable:true}
];
// Define DataSource
var myDataSourcePubmed = new YAHOO.util.DataSource("qct-list-article.html");
myDataSourcePubmed.responseType = YAHOO.util.DataSource.TYPE_JSON;
myDataSourcePubmed.connXhrMode = "queueRequests";
myDataSourcePubmed.responseSchema = {
resultsList: "articleItemList",
fields: ["pmid","articletitle","abstract","authorlist","medline"],
metaFields: {
totalRecords: "totalArticleRecords" // Access to value in the server response
}
};
// Add Paginator
var pubmedPaginator = new YAHOO.widget.Paginator({
rowsPerPage: 5,
template: YAHOO.widget.Paginator.TEMPLATE_ROWS_PER_PAGE,
rowsPerPageOptions: [5,10,15,20]
});
var myRequestPubmedBuilder = function(oState,oSelf)
{
oState = oState || {pagination:null, sortedBy:null};
var retstart = (oState.pagination != null) ? oState.pagination.recordOffset : 0;
var retmax = (oState.pagination != null) ? oState.pagination.rowsPerPage : 5;
return '?term=' + contentCurValue + '&retstart=' + retstart + '&retmax=' + retmax;
}
// myPubmedListTable config
var oConfigsPubmed = {
initialRequest: '?term=' + contentCurValue + '&retstart=0' + '&retmax=5',
dynamicData: true, // Enables dynamic server-driven data
selectionMode: "single",
paginator: pubmedPaginator,
generateRequest : myRequestPubmedBuilder,
caption : "Pubmed articles for this query : " //+ contentCountPubmed
};
// Create new DataTable - myPubmedListTable
if (tabExist == null)
{
var myPubmedListTable = new YAHOO.widget.DataTable(idReq, myColumnDefsPubmed, myDataSourcePubmed,oConfigsPubmed);
myPubmedListTable.handleDataReturnPayload = function(oRequest, oResponse, oPayload) {
if (oPayload == undefined)
{ oPayload = {}; }
oPayload.totalRecords = oResponse.meta.totalRecords;
return oPayload;
}
// Show myPubmedListTable
myPubmedListTable.onShow();
}
}
Andere Tipps
Es scheint einige seltsamen Dinge zu Fuß, hier zu sein; Ich kann nicht sehen, wo idReq definiert ist, und der Inhalt wird zweimal definiert.
Ich frage mich, wenn Inhalt, etwas seltsam wie <div id=></div>
könnte es führen.
Ich habe einige Änderungen: jetzt nur noch einen Inhalt (firt Inhalt ist jetzt contentCur)
.Aber gleiche Fehler.
In meinem Code: idReq ist als global definiert werden (es ist ok - ich kann Registerkarten hinzufügen), ich habe so etwas wie:
<div id=901></div>
Ich denke, das Problem ist in (was ich aber fehlt?): YAHOO.util.Event.on (tabView.getElementsByClassName ( 'close') [0], 'klicken', function (ev) { ...
Danke.