从这个工作元素开始,sans-js:http: //jsfiddle.net/37z1z7g1/
<star-rating></star-rating>
<script type="riot/tag">
<star-rating>
<div class="star-rating">
<input class="rb0" id="Ans_1" name="numericRating" type="radio" value="0" checked="checked" />
<input class="rb1" id="Ans_2" name="numericRating" type="radio" value="1" />
<input class="rb2" id="Ans_3" name="numericRating" type="radio" value="2" />
<input class="rb3" id="Ans_4" name="numericRating" type="radio" value="3" />
<input class="rb4" id="Ans_5" name="numericRating" type="radio" value="4" />
<input class="rb5" id="Ans_6" name="numericRating" type="radio" value="5" />
<input class="rb6" id="Ans_7" name="numericRating" type="radio" value="6" />
<input class="rb7" id="Ans_8" name="numericRating" type="radio" value="7" />
<input class="rb8" id="Ans_9" name="numericRating" type="radio" value="8" />
<input class="rb9" id="Ans_10" name="numericRating" type="radio" value="9" />
<input class="rb10" id="Ans_11" name="numericRating" type="radio" value="10" />
<label for="Ans_1" class="star rb0l"></label>
<label for="Ans_2" class="star rb1l"></label>
<label for="Ans_3" class="star rb2l"></label>
<label for="Ans_4" class="star rb3l"></label>
<label for="Ans_5" class="star rb4l"></label>
<label for="Ans_6" class="star rb5l"></label>
<label for="Ans_7" class="star rb6l"></label>
<label for="Ans_8" class="star rb7l"></label>
<label for="Ans_9" class="star rb8l"></label>
<label for="Ans_10" class="star rb9l"></label>
<label for="Ans_11" class="star rb10l last"></label>
<div class="rating"></div>
<div class="rating-bg"></div>
</div>
</star-rating>
</script>
请注意,如果您单击其中一颗星,它会保留所选星数的“值”(单击星号 4,前 4 星将在失去鼠标焦点后保持选中状态)。
当我添加一些要在单击星号时运行的 js 逻辑时,这就是我最终得到的结果(出于 JSFiddle 的目的,已用 console.log 替换了对父函数的调用):http: //jsfiddle.net/0u5oLyp5 /
function update(e) {
this.score = parseInt(e.target.value)/2;
if (this.score) {
//parent.UpdateScore(this.score);
console.log(this.score);
}
return true;
}
[随着
onclick="{ update }"
添加到每个标签元素]
我这里有两个问题:
1) 请注意,我在“update(e)”声明前添加了函数一词,这与https://muut.com/riotjs指南中的所有示例相反,因为如果我不这样做然后我得到
Uncaught TypeError: Cannot read property ‘target’ of undefined
因为它似乎在页面加载时运行该函数,而“e”尚未定义,而不仅仅是声明该函数。我发现这很奇怪,但我不确定我哪里出错了。
2)即使我在更新功能结束时“返回真”(重新启用默认事件),单击星星不再保持选择,当它失去鼠标焦点时以蓝色突出显示。一旦我从每个标签元素中删除“onclick='{ update }'”,选择就会再次起作用,所以这肯定是我没有成功触发默认事件处理程序的问题。
有没有人能够提供一些关于我哪里出错的指示?