2014-10-31 71 views
0

我正在嘗試獲取引薦來源並更新引用來源,以便我的用戶可以返回到他們回來的頁面。我有一個隱藏的輸入字段,它保存重定向的值。我有一個靜態值,以防萬一引用者爲空。如果引薦者不是空的,我想更新它的值。這裏是我寫的代碼,我甚至測試過它,並說它已更新,但是,我沒有正確重定向,所以它不起作用。隱藏的輸入字段沒有正確更新

JavaScript和HTML我已經寫了(記住,我已經正確鏈接的文件和這樣):

$(document).ready(function(){ 
    if (document.referrer != "") { 
    document.getElementsByName("redirect").value = document.referrer; 
    var test = "false"; 
    if (document.getElementsByName("redirect").value == document.referrer){ 
     test = "true"; 
    } 
    alert(test); 
    } 
    }); 

<script src="js/referrer.js"></script> 
<input type="hidden" name="redirect" value="https://www.google.com" /> 

我覺得這是一個小錯誤,或者有可能是某種標準,我不遵循。

感謝您的幫助!我感謝任何見解!

+0

你爲什麼要用jquery包裝你的javascript代碼? – JakeParis 2014-10-31 20:32:32

+1

因爲代碼引用了一個只在頁面加載後才存在的元素。 – 2014-10-31 20:33:44

+0

允許將JavaScript放入JQuery中嗎?我覺得這是所有合法的代碼,我沒有收到來自Chrome中的控制檯的任何錯誤。 – 2014-10-31 20:35:14

回答

0

做document.getElementsByName將返回一個不包含值的對象數組。使用getElementsByName時,無法更改該值(我知道並嘗試過)。我已經通過使用getElementById解決了這個問題,它實際上對我來說工作正常。

0

我看不出你給我的東西是什麼問題。但我可以說的是,如果您要在一個地方使用JQuery(文檔就緒函數),那麼您還應該使用它來獲取輸入字段的值。

如果您在輸入字段中輸入Id,而不是按名稱輸入,也會有所幫助。 Ids是獲得特定元素的最佳方式。這可能也是你的問題。

然後使用叫它:

$("#ID").val() 

因此您的代碼將成爲:

if($("#ID").val() === document.referrer) 

我也建議使用三層平等爲好。但這完全取決於你。

我從來沒有用document.referrer做過任何事情,但也可能有更好的方法來做到這一點。

0

一個奇怪的事情是,你是設置這些兩件事情彼此相等

document.getElementsByName("redirect").value = document.referrer; 

,如果他們彼此相等,然後立即進行測試。

if (document.getElementsByName("redirect").value == document.referrer) 

我不能說這是你的問題,但它是壞的編碼,應該修復。

+0

這是因爲我正在調試它並檢查它是否真的有效。我原本只有一行,但自從我嘗試瞭解發生了什麼之後,我加入了這一行。 – 2014-10-31 20:41:37

+0

啊。也許嘗試'console.log(document.getElementsByName(「redirect」).value)'。或者如果你不喜歡控制檯'alert(document.getElementsByName(「redirect」).value)' – JakeParis 2014-10-31 20:43:01

0

我認爲單個字母會讓你在這裏絆倒。

if (document.getElement**s**ByName("redirect").value == document.referrer){ 

'byName'沒有單數等值,所以你最終得到一個數組(或者至少是一個類似數組的對象)。與ID不同,允許多個輸入具有相同的名稱。最簡單的解決方案是這樣的:

if (document.getElementsByName("redirect")[0].value == document.referrer){