2014-04-07 2 views
1

답장을 통해 제 편집 된 코드를보실 수 있습니까?onclick 함수를 임의로 만드는 방법은 무엇입니까?

내 자바 스크립트에서 지금이 코드를 가지고 :

function test(sheet) 
{ 
    document.getElementById('pagestyle').setAttribute('href', sheet); 
} 

그리고 내 스타일을 변경하려면이 기능을 사용하려면

내 질문은
onclick="test('CSS/katy.css')" 

, 어떻게해야합니까은 " katy.css "내 폴더에서 임의의 CSS 파일.

배열에 대해 생각하고 있었지만이 방법을 적용하는 방법을 모르겠습니다.

var cssName=new Array(3) 

cssName[0]="<link rel='stylesheet' type='text/css' href='CSS/katy.css'>"; 
cssName[1]="<link rel='stylesheet' type='text/css' href='CSS/daftpunk.css'>"; 
cssName[2]="<link rel='stylesheet' type='text/css' href='CSS/wiliam.css'>"; 

편집 버튼 :

onclick="test('CSS/' + cssName1[rndIndex])" 

편집 테스트 기능 :

function test(sheet) 
{ 
    var cssName1=new Array(3) 

    cssName1[0]="<link rel='stylesheet' type='text/css' href='CSS/katy.css'>"; 
    cssName1[1]="<link rel='stylesheet' type='text/css' href='CSS/daftpunk.css'>"; 
    cssName1[2]="<link rel='stylesheet' type='text/css' href='CSS/wiliam.css'>"; 
    var rndIndex= Math.floor(Math.random()*3); 

    document.getElementById('pagestyle').setAttribute('href', sheet); 
} 
+0

가능한 복제본 [특정 범위의 Javascript에서 난수 생성?] (http://stackoverflow.com/questions/1527803/generating-random-numbers-in-javascript-in-a-specific-range) –

+0

'onclick = "test ('CSS /'+ cssName1 [rndIndex]) ''는 배열과 테스트 내부의 랜덤 인덱스를 정의하기 때문에 작동하지 않습니다. 그래서 함수에 전달하면 아직 정의되지 않았습니다 – Huangism

+0

사실, 임의 선택을하고 있기 때문에 배열을 함수에 전달할 필요가 없습니다. jsut은 함수 내부의 모든 것을 수행합니다. http를 참조하십시오. : //jsfiddle.net/EcBxp/1/ – Huangism

답변

4

다음과 같은 방법으로, [1,3]에서 랜덤 INT 번호를 생성 할 수 :

var rndIndex = Math.floor(Math.random()*3); 

그러면 생성 된 i ndex는 CSS를 얻기 위해 당신이 원하는 : 그것이 될 것 cssName 테이블에서

onclick="test(cssName[rndIndex])"; 

더 나은에만 해당 HREF 년대를 놓습니다. 나는 당신의 함수 선언에서 href 속성의 값을 설정했기 때문에 이것을 말하고있다.

업데이트 필자는 here에서 매개 변수가없는 기능을 선언하고 있음을 알 수 있습니다. 나는 setCss 함수를 선언하고 거기에 pagestyele 요소를 선택하고 css 중 하나에 'href'라는 속성을 임의로 설정합니다.

+1

큰 따옴표 반복 사용 – nicael

+0

나는 생각하지 않습니다. 'onclick = "test ("+ cssName [rndIndex] + ")"; "는 실행되지만'onclick ="alert (cssName [rndIndex]) "'는 – Huangism

+0

답장을 보내 주셔서 감사합니다. 나는 onclick = "test ('CSS /'+ cssName1 [rndIndex]) '를 사용했는데,이 함수는 test() 함수로 편집했다. 좀 봐 주실 래요, 저를 위해 일하지 않기 때문이죠. – user3406286

1

당신은 기능에 Math.random을 사용할 수 있습니다 : 당신은 올바른 방법으로

var cssName=new Array(3) 

cssName[0]="katy.css"; 
cssName[1]="daftpunk.css"; 
cssName[2]="wiliam.css"; 

function getRand(array){ 
    return array[ Math.floor(Math.random() * array.length) ]; 
} 

var static = "<link rel='stylesheet' type='text/css' href='"; 

alert(static + getRand(cssName) + "'>"); 

DEMO

1

있습니다.

cssName[parseInt(Math.random() * cssName.length + 1)] 
0

확인은 다음과 같이 랜드 기능을 사용할 수 있습니다 : 귀하의 배열로

, 지금 당신은 임의의 요소를 선택할 수 있습니다 먼저 배열을 정의

var cssName=new Array(3) 

cssName[0]="CSS/katy.css"; 
cssName[1]="CSS/daftpunk.css"; 
cssName[2]="CSS/wiliam.css"; 

이제는 임의로 시트를 선택하십시오.

var index = Math.floor((Math.random()*3)); 
,

한 다음 임의의 시트

onclick = "test("+cssName[index]+")"; 
0

당신이 Window setTimeout() Method 사용 30 당 예를 들어 두 번째 jQuery로 새로운 링크를 추가 할 수 있습니다를 선택합니다. setTimeout()

그리고 당신이 볼 수있는 주소 : How to use jQuery setTimeout function

하지만이 아이디어는 웹 사이트의 속도가 감소하는 것이됩니다.

+0

_jaquery_ 무엇입니까? _w3schools_이 공식 사양과 관련이 있습니까? (대답 : 아니오) –

+0

고마워요. 내 친구. ;) –

관련 문제