0

渡した文字列を分割しようとしています

$("#groupUL").append("<li>" + "<h2>About Item:</h2> " + response.data[i].message + "<br /> " + "<h2>Posted By:</h2> <a href='#' onclick='splitName('" + response.data[i].from.name + "');'>" + response.data[i].from.name + "</a>" +  "<br />");

私にエラーを渡しているようです

SyntaxError: syntax error

splitName(

それがどのように間違っているのかわからない...それが役立つ場合は、splitname関数があります

function splitName(txt){
    var myString = txt;

    var mySplitResult = myString.split(" ");

    console.log("The first element is " + mySplitResult[0]); 
    console.log("<br /> The second element is  " + mySplitResult[1]); 
    console.log("<br /> The third element is  " + mySplitResult[2]); 

};
4

2 に答える 2

2

引用符を引用符で囲んで正しくエスケープしようとすると、正しく理解するのが難しくなります。間違えている。

解決策は、小さな部分でそれを作ることです:

var action = "splitName('" + response.data[i].from.name + "');";
$("#groupUL").append("<li>" + "<h2>About ... onclick=\""+action+"\">..."); 

ただし、最善の解決策は、JavaScriptをインライン化するのではなく、jQueryのバインディング関数を使用するというベストプラクティスに従うことです。

$("#groupUL").append("... <a id=myid ..."); 
$("#myid").click(function(){ splitName(response.data[i].from.name) });
于 2013-03-21T22:47:49.133 に答える
0

コードの唯一の問題は、読みやすさの問題だと思います。ですから、改善してください。それを見てみましょう。私のコード例@JSbin。

ここにコードがあります:-(私はそれがより良いと思います)

var response = {
  data : {
    message: 'Cleaning code',
    from: {
      name: 'Clean Code works'
    }
  }
};


var li = $('<li>'); //Create empty li (Not Appending to DOM now due to performance issues)

$('<h2>').html('About Item:' + response.data.message + '<br />').appendTo(li);
$('<h2>').html('Posted By:').appendTo(li);
$('<a>').attr('href', '#')
  .html(response.data.from.name)
  .appendTo(li)
  .click(function() {
    splitName(response.data.from.name);
  });

$('<br>').appendTo(li);

// Append li to ul (Final operation to DOM)
li.appendTo('#groupUL');

function splitName(txt){
    var myString = txt;

    var mySplitResult = myString.split(" ");

    console.log("The first element is " + mySplitResult[0]); 
    console.log("The second element is  " + mySplitResult[1]); 
    console.log("The third element is  " + mySplitResult[2]); 
}
于 2013-03-22T13:45:25.557 に答える