2013-03-23 2 views
0

이 코드는 뼈대가 단순해야하며 평소와 같이 코드를 가르치는 철저한 방법이 없기 때문에 아마도 뭔가를 놓칠 수 있습니다. 내가 원하는대로 평가Javascript : 여러 변수 이름을 기반으로 문자열 컴파일

var key = <?php echo json_encode($key); ?>; 
var id<?php echo $key;?> = <?php echo json_encode($value['Claim']['id']); ?>; 
var point<?php echo $key;?> = <?php echo json_encode($value['Claim']['point']); ?>; 

: 희망이 PHP를 루프에서 의미 ...

하게, 나는이 있습니다. 그래서 ID2 그런 다음 등, ID2가 있어야하는데 어떤

동일 후에 나는 다음과 같이이 변수를 호출해야합니다

var takeurl = '/api/response.json?point='+ point + '&id=' + id; 

나는의 값으로 "점"과 "ID"를 원하는 경우를 제외하고 "point2"또는 "point4"또는 약식으로 point + key.

나는 "키"

var takeurl = '/api/response.json?point='+ point + key + '&id=' + id; 

는 "포인트"의 값을 더한 값을 반환로 POINT2 또는 POINT3의 값이 아닌, 그것을 작성하는 경우.

그렇다면 처음부터 그 값을 선언 할 때마다 항상 PHP를 치지 않아야한다는 것을 알았습니다. 나는 다음과 같이 할 수 있어야한다.

var key = <?php echo json_encode($key); ?>; 
var id[key] = <?php echo json_encode($value['Claim']['id']); ?>; 
var point{"key"} = <?php echo json_encode($value['Claim']['point']); ?>; 

그런 다음 동일한 규칙을 사용하여 새 변수를 생성한다. 내가 대답을 어디에 배열을 사용하여 관련이 비슷한 질문을 읽었지만, 다시 이것은 큰 PHP 루프에있는 모든, 그래서 내가 여기 상황을 피팅 볼 수 없습니다.

죄송합니다. 이 사용자 이름을 얻고 있습니다. 아이디어?

편집 할 내용 : 문제는 위에서 설명한 내용과 약간 다릅니다. 내 코드는 분명히 루프에 나타나는 최종 변수 값을 가져옵니다 (마치 '키'구분으로 정의하지 않고 단순히 "점"을 다섯 번 정의하는 것처럼). 나는 두려움을 느끼지 않는다. 무슨 일인지 알 수 있도록 코드가 있습니다. codepad.org/ETX5dI6C

예를 들어, 페이지의 네 번째 링크를 클릭하면 id4 및 point4 값을 가져옵니다. 대신, 어떤 링크를 클릭하든 마지막으로 정의 된 id5와 point5의 변수를 전달합니다. 나는 그것을 얻지 못 하느냐?

+0

무엇이 당신의 질문입니까? – ryan

+1

json은 전체 구조를 한 번에 인코딩하고 js에 액세스합니다. JSON을 직접 작성하는 것과 같습니다. – Esailija

+0

'var takeurl ='/api/response.json?point='+ point.toString() + key.toString() + '& id ='+ id;'또는'var takeurl = '/ api/response를 할 수 있습니다. .json? point = '+ point +' '+ key +'& id = '+ id;' – ryan

답변

1

그것은 조금 불쾌하지만이처럼 액세스 할 수 있습니다

window['point' + key] 

이 전역 변수이기 때문에, 그들은 윈도우 객체의 사실 속성에서, 그리고 같은 그들이 그 브래킷을 사용하여 참조 할 수 있습니다 통사론.

key == 5 일 때 window.point5과 같지만 window.point+key은 작동하지 않습니다.

그래서 전체 솔루션이 될 것입니다 :

var takeurl = '/api/response.json?point='+ window['point' + key] + '&id=' + window['id' + key]; 
+0

감사합니다. 그것은 평가하지 않습니다. ReferenceError : val is not defined – dilettante

+0

코드의 어딘가에 "val"이라는 변수를 언급하고있는 것처럼 들리고 그 변수가 정의되지 않은 것처럼 들립니다. –

+0

http에서 바이올린을 만들 수 있습니까? : //jsfiddle.net/과 관련된 js 줄이 있습니까? 또는 질문에 포함 시키십시오. 우리는 그렇게 할 수있을 것이라고 확신합니다. –

0

귀하의 문제는 당신이 point + keypoint의 값을 더한 key의 가치로 평가되는 문자열을 만드는 것입니다. 원하는 값을 넣으려면 "point" plus key 값을 입력하십시오.

그래서 당신은 동적으로 창 객체에 할당 된 가변적이고 이름입니다해야 할 일 :

window[ "point" + key ] 

을이 것 당신이 필요하다 window.point3로 평가 (의이 3을 가정 해 봅시다 키입니다 주어진).

+0

고맙습니다 ... 그래서 두 개의 새로운 변수를 만들었습니다 : var newpoint = window [ "point"+ key]; 다음에 읽을 테이크를 수정하십시오 : var takeurl = '/api/response.json?point='+ newpoint +'& id = '+ id; 이제 "val is not defined"오류가 발생합니다. 그리고 더 많이 혼란 스럽습니다 ... – dilettante

관련 문제