2015-11-18 82 views
0

如何我可以改變或href屬性使用JavaScript與條件添加到標籤的,例如,如果值分別爲10和15之間添加此路徑鏈路 等改變HREF動態

和這裏是代碼,,誰能幫助我

<a class="smt" href="#" onclick="result()">go 
</a><input type="text" name="sum"/> 

var vo; 
var vo = document.querySelector('[name="sum"]').value; //take value from textbox 
var a = document.getElementsByClassName("smt"); 
function result(vo,a){ 
    if(vo >= 10 && vo <= 15){ 
    a.href ="../result/result1.html";  
    } 
} 

codepen

+1

當你'getElementsByClassName'它會返回'array'的'elements'因爲可以有多個與''相同名稱class' elements'。所以我會建議使用'getElementsById'或者如果你確定只有一個具有'className'的''元素'做'getElementsByClassName [0]',然後你可以做'a.setAttribute('href','../result/result1.html')' –

+1

不帶參數調用函數'result()'也沒有意義,因爲函數邏輯完全基於指定的參數。由於您將這些變量聲明爲全局變量,這是非常糟糕的做法,請省略它們並定義不帶參數的函數:'function result()'。請遵循@GuruprasadRao的建議。 – cezar

+0

當你聲明一個像'var vo;'這樣的變量時,你應該稍後再賦值,而不是重新聲明它。因此,後面的行應該開始沒有keyvord var':'vo = document.querySelector ...' – cezar

回答

0

艾哈邁德TEIR,什麼都不會發生,因爲當你提供一個onclick處理程序錨它覆蓋href屬性的行爲...

如果要導航到另一個頁面,當你點擊鏈接,然後做到這一點:

<a id="myLink" href="#" onclick="var vo = document.querySelector('[name="sum"]')[0].value; if (vo >= 10 && vo <= 15) window.location.href = '../result/result1.html';">link text</a> 

如果你只是想改變錨的href屬性,但留在同一頁上,然後做到這一點:

<a id="myLink" href="#" onclick="this.href = '../result/result1.html';return false;">link text</a> 
0

getElementsByClassNamequerySelector都返回元素的數組,你是代碼邏輯錯在這裏的路該怎麼辦呢

var vo; 
 
var vo = document.querySelectorAll('[name="sum"]') 
 
var a = document.getElementsByClassName("smt"); 
 

 
(vo[0]).addEventListener("keyup", function(){ 
 
     if(vo[0].value >= 10 && vo[0].value <= 15){ 
 
     a[0].href ="../result/result1.html";  
 
    }else{ 
 
     a[0].href ="#";  
 
    } 
 
    console.log(vo[0].value >= 10 && vo[0].value <= 15) 
 
});
<a class="smt" href="#" onclick="result()">go 
 
</a><input type="text" name="sum" id="inpt"/>