2016-02-08 57 views
0

我正在尋找將我的「NodeNumber」變量放入loadSynchPage函數的參數中。Javascript:插入一個變量作爲參數

我的代碼查看頁面的名稱(例如,從http://www.example.com/tree/page.htm開始的page.htm),並在一系列行後給出「NodeNumber」。我希望頁面能夠解決NodeNumber,並在頁面加載時將其放入函數中。 所以我想這將是這個樣子:

<BODY onload="loadSynchPage(NodeNumber);"> 

我已經使用帶有點擊數按鈕了我的代碼輸出將NodeNumber。 我也得到了loadSynchPage(linkID)函數,使用onclick在我自己輸入數字的地方使用按鈕。按鈕,也有一個我預先定義的工作變量;但我無法讀懂我的「NodeNumber」,我花了2天的時間試圖弄清楚這一點。

這裏是我的代碼:

<script> 
function variables() { 
//Getting the page's name from the URL 
PageName = location.pathname.split("/").slice(-1); 
document.getElementById("PageName").innerHTML = PageName; 

//Converting the page name into a string 
PageNameString = String(PageName); 
document.getElementById("PageNameString").innerHTML = PageNameString; 

//Converting the string of the page name, into it's length 
PageLength = PageNameString.length; 
document.getElementById("PageLength").innerHTML = PageLength; 

//Setting the DemoFramesetNodes.js as a variable (Copy and Paste in - needs to have no " and be on one line) 
TextFromDemoFramesetNodesJS = "foldersTree = gFld(<i>Page 1 Title</i>, page1.htm)//000foldersTree.treeID = Framesetaux1 = insFld(foldersTree, gFld(Page 2 Title, page 2.htm)) //001insDoc(aux1, gLnk(R, Page 3 Title, Page3.htm)) //002aux1 = insFld(foldersTree, gFld(Page 4 Title, Page4.htm)) //003insDoc(aux1, gLnk(R, Page 5 Title, Page5.htm)) //004"; 
//Need to set the difference BETWEEN the "m" in htm and the start of the number 
//e.g. page2.htm)) //001 
CharacterDifference = "5"; 
document.getElementById("CharacterDifference").innerHTML = CharacterDifference; 

//Need to find the location of the page's name from the DemoFramsetNodes 
PageNameLocation = TextFromDemoFramesetNodesJS.lastIndexOf(PageNameString); 
document.getElementById("PageNameLocation").innerHTML = PageNameLocation; 

//Need to convert all variables to be added into numbers 
PageNameLocationNumber = Number(PageNameLocation); 
PageLengthNumber = Number(PageLength); 
CharacterDifferenceNumber = Number(CharacterDifference); 
document.getElementById("CharacterDifferenceNumber").innerHTML = CharacterDifferenceNumber; 

//Add the variables to give us the start location of the Node Number 
NodeNumberStart = PageNameLocationNumber + PageLengthNumber + CharacterDifferenceNumber; 
document.getElementById("NodeNumberStart").innerHTML = NodeNumberStart; 

//Add the variables to give us the end location of the Node Number 
NodeNumberEnd = PageNameLocationNumber + PageLengthNumber + CharacterDifferenceNumber + 3; 
document.getElementById("NodeNumberEnd").innerHTML = NodeNumberEnd; 

//this gives us the Node Number that we want 
NodeNumber = TextFromDemoFramesetNodesJS.substring(NodeNumberStart, NodeNumberEnd); 
document.getElementById("NodeNumber").innerHTML = NodeNumber; 

} 
var avar=Number(window.NodeNumber); 

//window.NodeNumber; 

function loadSynchPage(linkID) { 
var folderObj; 
docObj = parent.treeframe.findObj(linkID); 
docObj.forceOpeningOfAncestorFolders(); 
parent.treeframe.HightlightNode(linkID,docObj.link,'basefrm'); 
if (typeof parent.treeframe.document.body != "undefined") // To handle scrolling not working with NS4 
parent.treeframe.document.body.scrollTop=docObj.navObj.offsetTop 

} 


//myvar=Number(NodeNumber); 


// function loadnode(){ 
// document.getElementById('loadSynchPage').onclick=function(){loadSynchPage(myvar);}; 

// var myvar=15; 
//function init(){ 
// document.getElementById('EditBanner').onclick=function(){EditBanner(myvar);}; 
// } 
</script> 
</head> 

<BODY> 

<button onclick="javascript:settingvariables();">Page Highlight1</button> 
<button onclick="javascript:loadSynchPage(avar);">Page Highlight2</button> 


Page Name: <p id="PageName"></p> 
Page Name String: <p id="PageNameString"></p> 
Page Length: <p id="PageLength"></p> 
Character Difference: <p id="CharacterDifference"></p> 
Page Name Location: <p id="PageNameLocation"></p> 
Character Difference Number:<p id="CharacterDifferenceNumber"></p> 
Node Number Start: <p id="NodeNumberStart"></p> 
Node Number End: <p id="NodeNumberEnd"></p> 
Node Number: <p id="NodeNumber"></p> 

你可以從「//」接近底部,我已經嘗試過其他問題的一些不同的方式計算器上看到 - 我相信我已經嘗試了一切並且錯過了一些非常簡單的東西:/ 在w3之後,在設置諸如PageName和NodeNumber之類的東西之前,我還拿出了「var」,然後讓它們成爲全局變量?

爲了提供更多的信息:

的代碼是基於TreeView的 - 它與左側節點樹並單擊節點上右手架打開頁面。然而,點擊從右頁中的頁面到不同頁面的鏈接不會更新節點上的突出顯示,這就是爲什麼我正在嘗試執行此操作(onload)。

編輯:如果可能我還想將代碼放到一個外部的.js中,並引用它,因爲我有多個頁面(我上週用不同的工作代碼試了幾個小時,但也不能得到這個工作要麼)。

回答

1

所有你需要的是:

window.onload = function() { 
    loadSynchPage(NodeNumber); 
}; 

還是在身體標記在onload,你的問題是,它並沒有在沙盤在這個片段的工作:

Uncaught SecurityError: Sandbox access violation: Blocked a frame at " http://stacksnippets.net " from accessing a frame at " http://stackoverflow.com ". The frame requesting access is sandboxed and lacks the "allow-same-origin" flag.

function variables() { 
 
//Getting the page's name from the URL 
 
PageName = location.pathname.split("/").slice(-1); 
 
document.getElementById("PageName").innerHTML = PageName; 
 

 
//Converting the page name into a string 
 
PageNameString = String(PageName); 
 
document.getElementById("PageNameString").innerHTML = PageNameString; 
 

 
//Converting the string of the page name, into it's length 
 
PageLength = PageNameString.length; 
 
document.getElementById("PageLength").innerHTML = PageLength; 
 

 
//Setting the DemoFramesetNodes.js as a variable (Copy and Paste in - needs to have no " and be on one line) 
 
TextFromDemoFramesetNodesJS = "foldersTree = gFld(<i>Page 1 Title</i>, page1.htm)//000foldersTree.treeID = Framesetaux1 = insFld(foldersTree, gFld(Page 2 Title, page 2.htm)) //001insDoc(aux1, gLnk(R, Page 3 Title, Page3.htm)) //002aux1 = insFld(foldersTree, gFld(Page 4 Title, Page4.htm)) //003insDoc(aux1, gLnk(R, Page 5 Title, Page5.htm)) //004"; 
 
//Need to set the difference BETWEEN the "m" in htm and the start of the number 
 
//e.g. page2.htm)) //001 
 
CharacterDifference = "5"; 
 
document.getElementById("CharacterDifference").innerHTML = CharacterDifference; 
 

 
//Need to find the location of the page's name from the DemoFramsetNodes 
 
PageNameLocation = TextFromDemoFramesetNodesJS.lastIndexOf(PageNameString); 
 
document.getElementById("PageNameLocation").innerHTML = PageNameLocation; 
 

 
//Need to convert all variables to be added into numbers 
 
PageNameLocationNumber = Number(PageNameLocation); 
 
PageLengthNumber = Number(PageLength); 
 
CharacterDifferenceNumber = Number(CharacterDifference); 
 
document.getElementById("CharacterDifferenceNumber").innerHTML = CharacterDifferenceNumber; 
 

 
//Add the variables to give us the start location of the Node Number 
 
NodeNumberStart = PageNameLocationNumber + PageLengthNumber + CharacterDifferenceNumber; 
 
document.getElementById("NodeNumberStart").innerHTML = NodeNumberStart; 
 

 
//Add the variables to give us the end location of the Node Number 
 
NodeNumberEnd = PageNameLocationNumber + PageLengthNumber + CharacterDifferenceNumber + 3; 
 
document.getElementById("NodeNumberEnd").innerHTML = NodeNumberEnd; 
 

 
//this gives us the Node Number that we want 
 
NodeNumber = TextFromDemoFramesetNodesJS.substring(NodeNumberStart, NodeNumberEnd); 
 
document.getElementById("NodeNumber").innerHTML = NodeNumber; 
 

 
} 
 
var avar=Number(window.NodeNumber); 
 

 
//window.NodeNumber; 
 

 
function loadSynchPage(linkID) { 
 
    alert("loadSynchPage called"); 
 
    var folderObj; 
 
    docObj = parent.treeframe.findObj(linkID); 
 
    docObj.forceOpeningOfAncestorFolders(); 
 
    parent.treeframe.HightlightNode(linkID,docObj.link,'basefrm'); 
 
    if (typeof parent.treeframe.document.body != "undefined") // To handle scrolling not working with NS4 
 
    parent.treeframe.document.body.scrollTop=docObj.navObj.offsetTop 
 
} 
 

 

 
loadSynchPage(NodeNumber); 
 

 
//myvar=Number(NodeNumber); 
 

 

 
// function loadnode(){ 
 
// document.getElementById('loadSynchPage').onclick=function(){loadSynchPage(myvar);}; 
 

 
// var myvar=15; 
 
//function init(){ 
 
// document.getElementById('EditBanner').onclick=function(){EditBanner(myvar);}; 
 
// }
<button onclick="javascript:settingvariables();">Page Highlight1</button> 
 
<button onclick="javascript:loadSynchPage(avar);">Page Highlight2</button> 
 

 

 
Page Name: <p id="PageName"></p> 
 
Page Name String: <p id="PageNameString"></p> 
 
Page Length: <p id="PageLength"></p> 
 
Character Difference: <p id="CharacterDifference"></p> 
 
Page Name Location: <p id="PageNameLocation"></p> 
 
Character Difference Number:<p id="CharacterDifferenceNumber"></p> 
 
Node Number Start: <p id="NodeNumberStart"></p> 
 
Node Number End: <p id="NodeNumberEnd"></p> 
 
Node Number: <p id="NodeNumber"></p>

第二個問題:保存所有腳本(不包括荷蘭國際集團的<script>標籤)到myjs.js,把它旁邊的同一個目錄下page.html中,並從HTML刪除整個<script>塊,並且把這種代替它:

<script src="myjs.js"></script> 
+0

非常感謝!我已經設法讓它按照我的想法工作:D – Josh

相關問題