我真的很少使用Javascript,並且在理解如何使以下方面起作用時遇到了一些麻煩。我的目標是在頁面加載時執行特定的Javascript操作,並且添加到URL末尾的變量將觸發要執行的JavaScript操作。我正在尋找的頁面的URL是http://www.morgantoolandsupply.com/catalog.php。每個由JavaScript驅動的「+ expand」按鈕都會下拉頁面的某個區域。最終,我希望能夠創建一個URL,在頁面加載時自動下拉某個類別。有人可以向我解釋這個過程嗎?預先感謝任何幫助!如何在URL中使用變量執行Javascript代碼
回答
您已經有了調用功能:toggle2()
,它採用兩個參數,除了最後一個數字外,其他兩個參數恰好相同。因此,創建一個包含該號碼的網址:http://www.morgantoolandsupply.com/catalog.php#cat=4
然後使用正則表達式在location.hash
中找到該號碼。如果您決定在未來使用它們,這個版本足夠強大,可以處理多個網址參數:/[\#&]cat=(\d+)/
。但是,如果您希望從不向網址添加其他任何內容,則可以使用簡單的/(\d+)/
。
一旦獲得了號碼,使用該號碼創建兩個參數並呼叫toggle2()
是一件簡單的事情。
這應該工作:
window.onload = function() {
if (/[\#&]cat=(\d+)/.test(location.hash)) {
var cat = parseInt(RegExp.$1);
if (cat > 0 && cat < 13) {
toggle2("toggle"+cat, "displayText"+cat);
}
}
}
這個工作完美!非常感謝你的幫助! – user924650
你必須有點「手動」解析URL,因爲在URL中的參數不會自動傳遞給JavaScript,就像它們在服務器端腳本(通過PHP $_GET
,例如)
一方式是使用URL片段標識符,即最後可以使用的「#something」位。這可能是做這件事,因爲碎片不會被髮送到服務器的最巧妙的方法,所以它不會與任何其他參數
// window.location.hash is the fragment i.e. "#foo" in "example.com/page?blah=blah#foo"
if(window.location.hash) {
// do something with the value of window.location.hash. First, to get rid of the "#"
// at the beginning, do this;
var value = window.location.hash.replace(/^#/,'');
// then, if for example value is "1", you can call
toggle2('toggle' + value , 'displayText' + value);
}
的URL「HTTP混淆://www.morgantoolandsupply。 com/catalog.php#1「會自動擴展」toggle1「元素。
或者,也可以使用普通的GET參數(即「?富=欄」)
var parameter = window.location.search.match(/\bexpand=([^&]+)/i);
if(parameter && parameter[1]) {
// do something with parameter[1], which is the value of the "expand" parameter
// I.e. if parameter[1] is "1", you could call
toggle2('toggle' + parameter[1] , 'displayText' + parameter[1]);
}
window.location.search
包含參數,即一切從問號端部或所述URL片段。如果給定URL「example.com/page.php?expand=foo」,則parameter[1]
將等於「foo」。所以URL「http://www.morgantoolandsupply.com/catalog.php?expand=1」將擴展「toggle1」元素。
我也許會去尋找一些比URL中的數字更具描述性的東西,例如使用下拉列表的標題(比如「#abrasives」或「expand = abrasives」而不是「#1」或「expand = 1」),但是這需要對現有頁面進行一些調整,因此稍後請留下以供後續使用
在碎片中填充額外的東西並查看'window.location.hash'可能對客戶端解決方案更好。 –
@ muistooshort:嘿,我正在更新我的回答,準確地提出,當你評論時:) - 我同意,使用片段也是我的首選解決方案。但是當我第一次寫回答的時候,我太忙於GET參數了 – Flambino
不是一個完整的答案(「給一個人一條魚」等等),但您可以從沿着這些線:
// entire URL
var fullURL = window.location.href;
// search string (from "?" onwards in, e.g., "www.test.com?something=123")
var queryString = window.location.search;
if (queryString.indexOf("someParameter") != -1) {
// do something
}
更多信息可從Mozilla開發者網絡獲得window.location。
話雖如此,鑑於你在談論一個PHP頁面,爲什麼你不使用一些服務器端PHP來實現相同的結果呢?
- 1. 在HTML代碼中使用JavaScript變量
- 2. 在PHP代碼中使用javascript變量
- 3. 如何在C#中執行Javascript代碼
- 4. 如何在scriptlet代碼中使用javascript變量。
- 5. 如何在PHP代碼塊中使用Javascript變量?
- 6. 在代碼執行後記住變量
- 7. 如何使用變量的值在我的代碼中執行某些操作?
- 8. 如何在javascript中爲變量設置一行代碼?
- 9. 如何使用Javascript獲取URL變量
- 10. JavaScript代碼中調用JavaScript變量
- 11. 如何使用變量掩碼URL(.htaccess)
- 12. 如何存儲在一個PHP變量CSS代碼使用JavaScript
- 13. javascript變量在php代碼
- 14. 錯誤代碼執行相關代碼的變量代表的變量代表
- 15. 如何在URL變量中使用#(hashtag)
- 16. 如何在WinRT C#應用程序中執行Javascript代碼?
- 17. 使用Javascript中的「eval」運行的代碼的訪問變量
- 18. 如何在C#中的變量值發生變化時執行代碼?
- 19. 如何執行復雜的Javascript代碼?
- 20. 如何在.load()中使用的URL內執行JavaScript
- 21. Javascript - 如何使用變量在運行時替換現有的代碼
- 22. 在Chrome中「當場」執行Javascript代碼?
- 23. 在地址欄中執行javascript代碼
- 24. 如何使用此代碼執行@ Html.DropDownListFor?
- 25. 如何跟蹤4000行代碼過程中使用的變量?
- 26. 如何使JavaScript變量的URL?
- 27. 在立即執行中使用變量
- 28. 如何使用依賴變量的模式執行Javascript匹配?
- 29. 如何使用Autoit執行JavaScript後獲取源代碼
- 30. 如何使用JavaScript執行textarea html代碼onclick?
謝謝大家幫助我通過這個!我一直在努力尋找一個解決方案好幾天,但所有的答案肯定會增加我對這個應該如何工作的理解。 – user924650