2013-07-28 4 views
4

예를 들어 크롬 콘솔에 $("p")을 입력하면 [<p>Text1</p>,<p>..</p>]이 표시됩니다. 이는 내가 원하는 것입니다. 이제 결과 문자열을 변수에 저장하고 나중에 다시 사용하고 싶지만 아직 방법을 찾을 수 없습니다 ($("p").toString()[Object Object]입니다).javascript 코드에서 console.log의 결과 문자열을 가져 오는 방법은 무엇입니까?

코드에 console.log의 결과 문자열을 가져 오는 방법이 있습니까?

+3

왜 그 문자열을 원하겠습니까? 디버깅 목적으로 만 사용 하시겠습니까? 'JSON.stringify'가 닫힐까요? – Ryan

+0

블로그에서 사용하고 싶습니다. 첫 번째 줄은 코드이고, 두 번째 줄은 단추입니다. 버튼을 클릭하면 코드의 콘솔 문자열이 아래에 나타납니다. 많은 jquery 연산이있을 수 있기 때문에 콘솔을 열고 특정 행을 찾은 다음 페이지로 돌아가서 해당 연산을 찾는 것보다 낫습니다. – cameron

+0

JS 개발을 수행 중이라면 해당 콘솔이 영구적으로 열려 있어야합니다. 맞습니까? 그래서 유스 케이스를 얻지 못한다고 생각합니다 ... –

답변

1

수 없습니다. console.log는 문자열이 할 수없는 마술을합니다. 객체를 문자열로 렌더링하는 것이 아닙니다. 또한 객체 구조를 대화식으로 클릭 할 수있게합니다. 여러 개의 상호 작용 요소를 렌더링합니다. 개발자 패널은 객체에 대한 참조를 가져 와서 코드가 도달 할 수있는 곳 밖에서 렌더링합니다.

그러나 @minitech 메모로는 JSON.stringify(myObject)으로 가까워 질 수 있습니다.

var myObject = { a: 1, b: 2 }; 
myObject.toString();  // [object Object] 
JSON.stringify(myObject); // {"a":1,"b":2} 

일반적으로 순환 참조가 있으므로 DOM 요소에서는 작동하지 않지만, 따라서 jQuery 객체를 크롤링하고 문자열로 덤프하는 고유 한 함수를 작성해야한다. 거기에는 당신을 위해 할 일이 없습니다.

function repr(obj) { 
    if(obj == null || typeof obj === 'string' || typeof obj === 'number') return String(obj); 
    if(obj.length) return '[' + Array.prototype.map.call(obj, repr).join(', ') + ']'; 
    if(obj instanceof HTMLElement) return '<' + obj.nodeName.toLowerCase() + '>'; 
    if(obj instanceof Text) return '"' + obj.nodeValue + '"'; 
    if(obj.toString) return obj.toString(); 

    return String(obj); 
} 

그것은 대화 형 또는 종합되지 않습니다 :

+0

알았습니다. 감사합니다. 추신 : 나는 답변에 대해 투표하지 않았다. 다른 사람이 그렇습니다. – cameron

1

음, 여기에 뭔가 틱입니다. 필요한 경우 추가 할 수는 있지만 특정 시점에서 WebKit 개발자 도구의 소스를 보는 것이 더 쉽습니다.

관련 문제