2009-07-10 38 views
0

我尝试做同样的事情DAVS叫嚷例如: http://blog.davglass.com/files/yui/tab3/TabView的和关闭按钮的问题

但我必须忘掉的东西...

我有这样的错误:

节点未找到“code:”8 [Break on this error] this._tabParent.removeChild( tab.get(ELEMENT));

这里我的代码:

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); 
         }); 
} 

有人能帮助我吗?

我缺少什么?

谢谢。

回答

0

我找到了解决办法这是有效的,我添加了一个分页器。

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(); 
} 
} 
0

在这里似乎有一些奇怪的事情发生;我看不到idReq在哪里定义,并且内容被定义了两次。

我不知道是否像<div id=></div>奇怪的内容可能会导致它。

0

我做了一些改变:现在只有一个内容(firt内容现在是contentCur)。

但同样的错误。

在我的代码: idReq是定义为全局的(这是确定 - 我可以添加标签),我有这样的:

<div id=901></div> 

我认为,这个问题是在(但我缺少的是什么?) : YAHOO.util.Event.on(tabView.getElementsByClassName( '关闭')[0], '点击',功能(EV){ ...

谢谢