2016-09-20 2 views
0

js에 관해서는 거의 알지 못합니다.href onclick을 여러 변수로 변경하십시오.

원래 클래스를 바꾸는 데 사용 된 아래 코드를 사용하고 있습니다. 나는 .className.href으로 바꾸는 것만 큼 간단하다고 생각했지만 틀렸어.

내 문제는 한 번 작동 한 다음 중지된다는 것입니다.

$(document).ready(function(){ 
    $('#click').click(function() { 
    $('#url').each(function(){ 
     var classes = ['/1','/2','/3','/4']; 
     this.href = classes[($.inArray(this.href, classes)+1)%classes.length]; 
    }); 
    }); 
}); 

편집 :

<a id="url" href="/0">hello</a> 

내 목표는/0 등 각각의 onclick과/1 다음/2로 전환하는 것입니다 : 여기 내가 사용하고 html로입니다.

+0

href를 변경하려면 - $ (this) .attr() 메서드를 사용하십시오. – Chetan

+1

id가 고유해야하기 때문에 한 번 수행 한 후에 중지합니다. 클래스 또는 다른 선택기를 사용하여 각 링크에 코드를 적용해야합니다. 귀하의 링크가 모두 동일한 id 인 경우 변경해야합니다. – gavgrif

+4

스티브 잡스! 다행 이군! 그래서 기본적으로 요소의 클래스를''className'''에서''href'''''로 바꾸려고합니다. ?? – kkaosninja

답변

1

.attr()을 사용할 수 있으며, 변수를 -1으로 설정할 수 있습니다. 변수가 classes.length에 도달 할 때까지 click 이벤트 핸들러 증분 변수에서 0으로 변수를 재설정하고 Remainder 연산자를 사용하지 않습니다. 프로토콜 file:// 또는 http:// 조용히 상기 href 부가가치 때문에

$(document).ready(function() { 
 
    var classes = ['/1','/2','/3','/4']; 
 
    var i = -1; 
 
    var url = $("#url"); 
 
    $('#click').click(function() { 
 
    i = (++i < classes.length) ? i : 0; 
 
    url.attr("href", classes[i]); 
 
    console.log(url.attr("href")); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
 
</script> 
 
<button id="click">click</button> 
 
<a id="url" href="/0">hello</a>

+0

고맙습니다. 정말이 것을 배울 필요가 있습니다. –

+0

@SteveJobs 업데이트 된 게시물보기. – guest271314

1

이 실패한다.

그래서이 변경 :

$.inArray(this.href, classes) 

에 : 배열에 그것을보고하기 전에 문자열에서 프로토콜을 제거

$.inArray(this.href.replace(/^.*?\/\//, ''), classes) 

....

관련 문제