无法通过在js中通过innerHTML创建的onclick正确调用JS函数

时间:2015-07-07 12:59:52

标签: javascript html json

我想使用onclick调用函数loadInWhat并填充我的输入id =" what"使用LI的值

 function createDivBox(data){
        document.getElementById("whatContainer").style.display="block";
        document.getElementById("whatContainer").classList.add("ac-container");
        var node = "";
        for (var i=0; i<data.Suggestions[0].Results.length;i++)
        {
            var textnode ='<li value="'+data.Suggestions[0].Results[i].Name+'" onclick="loadInWhat(this.value)">'+data.Suggestions[0].Results[i].Name+'</li>';
            node = node.concat(textnode);
        }
        document.getElementById("whatContainer").innerHTML = '<div class="ac-content"><div class="ac-bd" id="ac-bd"><ul>'+node+'</ul></div></div>';

    }


function loadInWhat(loadStr)
{
  document.getElementById("what").value=loadStr;
}

我的函数在JSON对象数据的基础上动态创建了li元素。我希望如果我点击任何li元素,输入id =&#34; what&#34;字段由其值填充,即data.Suggestion [0] .Results [0] .Name

每当我通过此值时,只有&#39; 0&#39;通过了。

1 个答案:

答案 0 :(得分:2)

li tag的值必须是整数。 Reference

我建议改用数据属性。

编辑:数据属性示例

像这样创建li(我将整个元素传递给javascript函数);

var textnode ='<li data-val="'+data.Suggestions[0].Results[i].Name+'" onclick="loadInWhat(this)">'+data.Suggestions[0].Results[i].Name+'</li>';

你可以在这样的Javascript中访问这个值;

function loadInWhat(el)
{
  var loadStr = el.dataset.val;
  document.getElementById("what").value=loadStr;
}