0

입력란 <input type="text" name="input">이 있습니다.자바 스크립트와 연결된 텍스트로 입력 값을 설정하십시오.

는 또한 몇 가지 링크 나 링크에서 사용자가 클릭을하자 링크의 값으로 입력 값을 설정할

<div> 
<a href="#">first link</a> 
<a href="#">second link</a> 
... 
</div> 

있습니다.

은 내가

const input = document.getElementById('input'); 

document.getElementsByTagName('a').forEach(function() { 
    this.onclick = function() { 
    input.value = this.innerHTML(); 
    } 
}); 

같은 것을해야 추측하지만 document.getElementsByTagName('a') 배열을 반환하지 않는 것을 알고, 그래서 그것은 가능하지, 난이 올바른 방법입니다 확실하지 않다.

+0

사용에게 간단한 루프 :'var에 링크 = document.get ElementsByTagName ('a'); (var i = 0, n = a.length; i mplungjan

+0

ArrayList를 사용하여 배열 –

답변

2

getElementsByTagName()HTMLCollection을 반환합니다.

워드 프로세서 당 사용량 :

HTMLCollection 인터페이스 (문서 순) 요소들의 일반적인 콜렉션 (인수 유사한 어레이 형상 물체)을 나타내고,리스트로부터 선택하기위한 방법 및 특성을 구비 .

// document.forms is an HTMLCollection 

elem1 = document.forms[0]; 
elem2 = document.forms.item(0); 

alert(elem1 === elem2); // shows: "true" 

이것은 당신이 (.length를 사용 포함) 배열처럼 결과를 처리 할 수 ​​있어야합니다 것을 의미한다.

2

첫째, Dom 목록은 정상적인 배열이 아니므로 forEach는 작동하지 않습니다. 둘째, innerHTML은 함수가 아니며 속성입니다.

[] .slice.call은 일반 배열로 변환하는 데 사용할 수 있습니다.

아래에서보십시오. ->

const input = document.getElementById('input'); 
 

 
[].slice.call(document.getElementsByTagName('a')). 
 
forEach(function (e) { 
 
    e.onclick = function (evt) { 
 
    evt.preventDefault(); 
 
    input.value = this.innerHTML; 
 
    } 
 
});
<div> 
 
<a href="#">first link</a> 
 
<a href="#">second link</a> 
 
</div> 
 

 
<input id="input" type="text">

+0

가능성이 높습니다 .Default()도 링크를 따라 가지 않으려합니다. – mplungjan

+0

이 경우 빈 해시 뱅이므로 아무 것도하지 않습니다. 하지만 여러분의 권리는 preventDefault를 사용하는 것이 좋습니다. 나는 갱신 할 것이다! – Keith

0

다음이 시도 :

https://jsfiddle.net/7h1a3p4x/5/

var el = document.getElementsByClassName("link"); 
 
for (var i = 0; i < el.length; i++) { 
 
    el[i].addEventListener('click', sendData, false); 
 
} 
 

 
function sendData() { 
 
    var input = document.getElementById("myinput"); 
 
    input.value = this.innerHTML; 
 
}
<input id="myinput" type="text" name="name" /> 
 
<div> 
 
    <a class="link" href="#">LINK 1</a> 
 
    <a class="link" href="#">LINK 2</a> 
 
</div>

+0

addEventListener를 사용하는 것이 onclick을 사용하는 것보다 덜 호환됩니다. 또한 당신은 아마도 feedback()이 링크를 따르지 않도록하고 싶을 것입니다. 피드백과 편집을 위해 – mplungjan

+0

@mplungjan에게 감사드립니다. –