簡體   English   中英

Javascript:插入變量作為參數

[英]Javascript: inserting a variable as a parameter

我正在尋找將“ NodeNumber”變量放入loadSynchPage函數的參數中。

我的代碼查看頁面的名稱(例如,來自http://www.example.com/tree/page.htm的 page.htm),並在一系列行之后給出“ NodeNumber”。 我希望頁面計算出NodeNumber並在頁面加載時將其放入函數中。 所以我想它看起來像這樣:

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

我有使用onlick按鈕來輸出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>

正如您從底部附近的“ //”中看到的那樣,我已經嘗試了與其他有關stackoverflow問題的不同方法-我確定我已經嘗試了所有方法,並且缺少了一些非常簡單的方法:/我也取出了“ var在w3之后說要設置諸如PageName和NodeNumber之類的東西之前,這將使它們成為全局變量?

要提供更多信息:

該代碼基於TreeView-它有一個樹,樹的左邊有節點,然后單擊節點以在右側框中打開頁面。 但是,單擊從右頁中的頁面到其他頁面的鏈接不會更新節點上的突出顯示,這就是為什么我要這樣做(加載)。

編輯:如果可能的話,我也想將代碼放入外部.js並引用它,因為我有多個頁面(上周我用不同的有效代碼嘗試了幾個小時,但也無法正常工作要么)。

所有你需要的是:

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

還是body標簽上的onload,您遇到的問題是,此代碼段中的沙箱無法正常工作:

未捕獲到的SecurityError:沙箱訪問沖突:阻止了位於http://stacksnippets.net的框架訪問位於http://stackoverflow.com的框架。 請求訪問的幀被沙盒化,並且缺少“ allow-same-origin”標志。

 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 //eg 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM