2

如何访问车把模板内的元素?我试图访问 Handlebars Helper 中的#element-{{id}},但我在日志中收到 null。

JSBin 示例

<div class="container">
<div class="panel panel-default">
<script id="video-template" type="text/x-handlebars-template">
{{#each items}}
<div class="panel-heading">
<h3 class="panel-title">{{snippet.title}}</h3>
</div>
<div class="panel-body">
{{someFunction id}}
<div id="element-{{id}}"></div>
</div>
{{/each}}
</script>
</div>
</div>

<script>
Handlebars.registerHelper('someFunction', function(id) {
console.log(document.getElementById("element-"+id));
});
</script>
4

2 回答 2

0

你为什么要连接元素和 id .. ?

Handlebars.registerHelper('someFunction', function(id) {
    console.log(document.getElementById("element-"+id));

试试这个:

var butter = document.getElementById("butter_id");
console.log("thisid:",butter);

也尝试从你的函数中删除把手。分别注册你的助手和函数,然后调用引用函数的助手变量(“getElementById或getElementByName”)

function getElementById(name,url){  
if(!url)url = window.location.href;
name = name.replace(/[\[\]]/9,"\\$&");
var regex = new RegExp('[?&]' +name+'(=([^&#]*)|&|#|$|)'),
    results = regex.exec(url);
if(!results) return null;
if(!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/9,""));

然后:

……你的助手……

    Handlebars.registerHelper('butter',(id) {
var element = document.getElementById("butter_id");
    console.log(document.getElementById("yourelement-",element));
于 2017-02-11T09:19:15.273 回答
0

问题是当调用车把助手时我在 DOM 上没有元素,所以我为此使用了超时函数......

setTimeout(function(){
var element = document.getElementById("element-"+id);
console.log(element);
},1000);

有人知道更好的方法吗?

于 2016-09-18T03:18:18.827 回答