외부 js가 있는데 이는 내 HTML에서 div 중 하나의 내부에서 호출됩니다.외부 함수 호출 js
var script = document.createElement("script");
script.innerHTML = '$("body").prepend(\'<input type="hidden" id="sid" value="0">\');var vl=0;$(".sbut").click(function(){vl ++; var snew=vl;$("#sid").val(snew).trigger("change");});';
document.head.appendChild(script);
$("#sid").change(function(){
alert("change");
});
경고가 트리거되지 않은 : 그 외부 파일에서 나는 다음과 같은 코드가 있습니다. 내가 이것을 시도하면 :
var script = document.createElement("script");
script.innerHTML = '$("body").prepend(\'<input type="hidden" id="sid" value="0">\');var vl=0;$(".sbut").click(function(){vl ++; var snew=vl;$("#sid").val(snew).trigger("change");});$("#sid").change(function(){somef();alert("change");}); ';
document.head.appendChild(script);
function somef(){
alert("change");
}
나는 나의 함수 somef가 정의되지 않는다. 나는 이것이 내 기능의 순서로 무언가를해야한다고 생각하지만 정확히 무엇이 정확한지는 모르겠다. 누군가 적절한 방법이 무엇인지 제안 할 수 있습니까? 또한 내 외부 스크립트 (fscript.js)는 HTML에서 div 중 하나에서 호출되며 HTML에 액세스 할 수 없으므로 변경할 수 없습니다. 그래서 나는 입력과 스크립트도 덧붙인다.
페이지에서 '.sbut'요소는 어디에 있습니까? 스크립트보다 페이지에서 더 낮은'.sbut' 엘리먼트는 클릭 핸들러를 부착하지 않습니다. 또한 ES2015 (또는 그로부터 추출)를 사용할 수 있다면 주사하는 HTML은 템플릿 줄을 사용하여 훨씬 쉽게 읽을 수 있습니다. 그 이유는 줄 바꿈 문자를 사용할 수 있기 때문입니다. –
생각해 보니 왜이 코드를 문자열로 쓰고 스크립트 태그를 삽입하는지 이해가 안됩니다. 이미 외부 스크립트를로드 중이므로 해당 파일에 기록 할 수있는 이유가 없어야합니다. 이 스크립트의 일부로 jQuery를 주입하지 않았다면 실행 순서를 보장하기 위해 다른 스크립트 태그를 표시하지 않았습니까? –
비록 스크립트 문자열 외부에서 jQuery를 사용하기 때문에 이미 페이지에로드되어 있다고 가정하고 있습니까? –