Я хочу создать атрибут html, который содержит скрипт, но я не могу управлять этим, чтобы войти в мой скрипт - PullRequest
0 голосов
/ 22 мая 2019

Проблема с областью «this»
Я хочу создать атрибут html, содержащий скрипт, но не могу управлять «this», чтобы перейти к моему сценарию.

Заранее спасибо!

<!-- html -->
<div script="console.log( 2 + 2 + ' -> ' + this)">
  <!-- some html -->
</div>

<script>
function scriptEval() {
    var script_elements = [];

    document.querySelectorAll("*").forEach(attr => {
        if ("script" in attr.attributes) {
            script_elements.push(attr);
        }
    });
    script_elements.forEach(element => {
        var val = element.attributes.script.value;
        element.removeAttribute("script");
        val = eval(val);
    });

}
scriptEval();

// output
// 4 _ undefined

// I need
// 4 _ <div> ... </div> or whatever the this value is

</script>

1 Ответ

1 голос
/ 22 мая 2019

Я понял это.Извините, что беспокою.
Это будет очень полезно!

Обратите внимание на атрибут html-скрипта.

ответ:

<!-- html -->
<div script="(e)=>{console.log(2 + 2 + ' -> ' + e)}">
  <p script="(e)=>{e.style.color = 'red'}">Some text that is not red</p>
  <div script="(e)=>{ [custume for loop iterator after fetch() applied on this div] }"></div>

</div>

<script>

 function scriptEval() {
    document.querySelectorAll("*[script]").forEach(element => {
        var val = element.attributes.script.value;
        element.removeAttribute("script");
        val = eval(val);
        return val(element);
    });
}
scriptEval();

// the output now
// 4 _ [object HTMLDivElement]

</script>
...